Работа с контейнерами LXC в Debian

Работа с контейнерами LXC в DebianТехнология LXC (Linux Containers) — это технология, позволяющая создать так называемые контейнеры, являющиеся по сути виртуальными машинами, использующими одно ядро. При этом в контейнерах могут работать разные операционные системы. Вы можете одновременно на одном и том же железе запустить, например, Debian, Ubuntu, CentOS, Gentoo и другие, которые будут использовать одно и то же ядро. В этом плане LXC работает схоже с OpenVZ. Давайте посмотрим, как их использовать.

Установка LXC

Самое первое, что надо сделать — поставить пакеты

Затем проверить, смонтировались ли cgroups.

Если вы видите такой список, значит всё хорошо. Если вы не видите memory, то нужно сделать кое-что еще, в противном случае мы не сможем выставлять ограничения по использованию памяти. Проверить можно также следующей командой:

Если строка «memory» у вас выглядит похожим образом, надо включить поддержку управления памятью в ядре. Это можно сделать следующим образом:

1) Добавить в файле /etc/default/grub в строчку

опции «cgroup_enable=memory» и «swapaccount=1». Строчка должна выглядеть так:

2) Дать команду «update-grub»

3) Перезагрузить компьютер

4) Посмотреть еще раз содержимое /proc/cgroups. Теперь оно должно выглядеть примерно так:

Теперь нужно проверить конфигурацию LXC:

Все настройки должны быть enabled. Теперь можно приступать к созданию контейнера.

Создание контейнера

Для создания контейнера используется команда «lxc-create». Вот пара опций, которые можно использовать:

-n <имя> — Название контейнера

-t <тип> — Тип контейнера. По сути операционная система, которая будет работать в контейнере. Посмотреть список доступных вариантов можно командой «ls /usr/share/lxc/templates/». В этой директории лежат шаблоны для контейнеров.

Создадим новый контейнер (виртуальную машину) с операционной системой debian:

Контейнер создан. Запускаем его командой

Виртуальная машина загрузится, входим как root, можно сразу поменять пароль root’а. Сетевой карты в контейнере еще нет, ее надо добавить, если нам нужна поддержка сети. Для начала выходим из консоли виртуальной машины нажав Ctrl+a и затем q. Останавливаем контейнер

Редактируем файл /var/lib/lxc/myvm/config. Меняем строчку

на

И добавляем следующее:

В файл /etc/network/interfaces добавим бридж:

Затем поднимаем его

Настройки сети готовы, можно снова запускать контейнер

После загрузки проверяем, есть ли сеть:

Как видим, сеть есть, можно продолжать работать, устанавливать приложения, работающие с сетью.

При запуске контейнера можно добавить опцию «-d»:

И потом подключиться после загрузки контейнера командой

Отцепиться от консоли можно нажав Ctrl+a q

В общем, вот и всё, можно приступать к настройке машины.

Автостарт контейнеров

Для того, чтобы контейнер стартовал автоматически после старта системы необходимо сделать символическую ссылку на конфигурационный файл в директории /etc/lxc/auto:

В последних версиях LXC это не требуется, автостарт обеспечивается опциями самого контейнера. Вот они:

 

Примечания

В конце еще несколько замечаний.

1) Для создания контейнера с Ubuntu может потребоваться установить пакет «ubuntu-archive-keyring».

2) Для создания контейнера с CentOS необходимо поставить пакет yum (да-да, он есть в Debian’е).

3) В комплекте с LXC идет некоторое количество программ, названия которых начинаются с «lxc-test-«. Очень рекомендую посмотреть.

И, как обычно, жду замечания в комментариях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *