Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
serverguide-precise-ru.pdf
Скачиваний:
77
Добавлен:
03.05.2015
Размер:
1.86 Mб
Скачать

Виртуализация

5.3. Администрирование контейнеров

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

Самый простой способ создать контейнер — использовать lxc-create. Этот сценарий использует специфические для дистрибутива шаблоны в /usr/lib/ lxc/templates/ для установки дружественных контейнеру настроек chroots в /

var/lib/lxc/CN/rootfs, и инициализации конфигурации в /var/lib/lxc/CN/fstab и /var/lib/lxc/CN/config, где CN — название контейнера.

Команда на создание простейшего контейнера будет выглядеть следующим образом:

sudo lxc-create -t ubuntu -n CN

Она указывает lxc-create использовать шаблон ubuntu (-t ubuntu) и вызывать контейнер CN (-n CN). Поскольку не указан файл настроек (что можно сделать с помощью параметра `-f file'), будет использован файл настроек по умолчанию /etc/lxc/lxc.conf. Это предоставит контейнеру единственный сетевой интерфейс veth, подключенный к мосту lxcbr0.

Шаблоны создания контейнеров также могут воспринимать аргументы. Они могут быть перечислены после --. Например:

sudo lxc-create -t ubuntu -n oneiric1 -- -r oneiric

передаёт параметры '-r oneiric1' шаблону ubuntu.

5.3.1.1. Справка

Справку по команде lxc-create можно увидеть, используя lxc-create -h. Однако шаблоны также принимают свои собственные параметры. Если вы выполните

sudo lxc-create -t ubuntu -h

то после общего экрана помощи lxc-create будет следовать вывод помощи, касающийся шаблона ubuntu. Если не указывать шаблон, то будет показана помощь только по lxc-create.

5.3.1.2. Шаблон ubuntu

Шаблон ubuntu может использоваться для создания контейнеров системы Ubuntu любого выпуска, начиная с 10.04 LTS. Он использует debootstrap для создания кэшированной файловой системы контейнера, с которой будет создаваться копия при каждом создании контейнера. Кэшированный

401

Виртуализация

образ сохраняется и пересоздаётся только в том случае, если вы создаёте контейнер с использованием передаваемой шаблону опции -F (flush), то есть:

sudo lxc-create -t ubuntu -n CN -- -F

Версия Ubuntu, установленная в контейнер, будет той же самой, что и на основной системе, если не указать опцию -r, то есть:

sudo lxc-create -t ubuntu -n CN -- -r lucid

Если вы хотите создать 32-битный контейнер на 64-битной системе, передайте в контейнер параметр -a i386. Если у вас установлен пакет qemu-user-static, то вы можете создать контейнер, используя любую архитектуру, поддерживаемую qemu-user-static.

В контейнере будет присутствовать пользователь ubuntu с паролемubuntu, входящий в группу sudo. Если вы хотите хотите добавить открытый ключ для пользователя ubuntu, вы можете это сделать параметром -S sshkey.pub.

Вы можете связать bind пользователя основной системы (например) с контейнером, используя опцию -b jdoe. Это позволит скопировать пароль и shadow записи пользователя jdoe в контейнер, удостоверится, что его группа по умолчанию и оболочка доступны, добавит его в группу sudo и смонтирует связыванием (bind-mount) его домашний каталог в контейнер при запуске контейнера.

После создания контейнера архив release-updates добавляется в файл sources.list контейнера, и архив его пакетов будет обновлён. Если операционная система в контейнере имеет версию старее 12.04 LTS, то будет автоматически установлен пакет lxcguest. Но если указана опция --trim, то пакет lxcguest не будет установлен и многие сервисы

будут удалены из контейнера. Результатом будет более быстрый запуск контейнера, но, в то же время, ухудшение возможностей его обновления.

5.3.1.3. Шаблон ubuntu-cloud

Шаблон ubuntu-cloud создаёт контейнеры Ubuntu, загружая и извлекая опубликованные образы для облака Ubuntu. Он воспринимает некоторые из опций шаблона ubuntu, а именно -r release, -S sshkey.pub, -a arch,

и -F для сброса кешированных образов. Он воспринимает также некоторые дополнительные опции. Опция -C создаёт cloud контейнер, настроенный на использование с сервисом metedata. Опция -u позволяет инициализирующему облачному файлу с пользовательскими данными настраивать контейнер при старте. Если передается -L, то не будет

402

Виртуализация

установлено никаких национальных настроек. Опция -T может быть использована для выбора размещения извлекаемой свёртки (tarball) вместо использования опубликованной свёртки облачного образа. Наконец,

опция -i устанавливает id системы для cloud-init, который по умолчанию приравнивается к случайной строке.

5.3.1.4. Другие шаблоны

Шаблоны ubuntu и ubuntu-cloud хорошо поддерживаются. Однако доступны и другие шаблоны. Шаблон debian создаёт контейнер на основе Debian, используя debootstrap почти также, как это делает шаблон ubuntu. По умолчанию он устанавливает образ debian squeeze. Другие версии могут быть выбраны установкой переменной окружения SUITE:

sudo SUITE=sid lxc-create -t debian -n d1

Поскольку debian не может быть безопасно загружен внутри контейнера, контейнеры debian будут урезаны как при использовании опции --trim для шаблона ubuntu.

Для очистки кэша образа контейнера вызывайте шаблон напрямую и передавайте ему опцию --clean:

sudo SUITE=sid /usr/lib/lxc/templates/lxc-debian --clean

Существует шаблон fedora, создающий контейнеры на базе версий fedora не выше 14. Выпуски fedora, начиная с 15, основаны на systemd,

который шаблоны пока не могут преобразовать в установку, загружаемую в контейнере. Перед тем как запускать шаблон fedora, вам следует убедиться, что установлены yum и curl. Контейнер с fedora 12 может быть установлен следующим образом:

sudo lxc-create -t fedora -n fedora12 -- -R 12

Существует шаблон OpenSuSE, но он требует программу zypper которая пока не имеет пакета. Таким образом, шаблон OpenSuSE не поддерживаются.

Ещё два шаблона созданы в основном для экспериментальных целей. Шаблон busybox создает очень маленький системный контейнер, основанный целиком на busybox. Шаблон sshd создает контейнер приложений, запускающий sshd в области имен частной сети. Каталоги библиотек и двоичных файлов монтируются связыванием внутрь контейнера, хотя не /home или /root. Для создания, запуска и соединения по ssh с контейнером, вы можете использовать следующее:

403

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]