Создание основы файловой системы для контейнеров
Устанавливаем основные компоненты, которые понадобятся для создания общей файловой системы, командой:
$ apt-get install debootstrap lxc lxc-templates lxctl cgroup-lite rsync
Далее включим две управляющие опции.
В конфигурации сети включим сетевой мост для контейнеров:
$ nano /etc/init/lxc-net.conf
USE_LXC_BRIDGE="true"
А для автозапуска контейнеров при старте системы включим:
LXC_AUTO="true"
В файле lxc.conf, командой:
$ nano /etc/init/lxc.conf
Далее отредактируем конфигурационный файл:
$ nano /etc/default/lxc
И добавим в него следующие строки:
Введем переменную:
$ lxcRoot="/lxc"
Создадим каталог /lxc:
$ mkdir -p ${lxcRoot}
Создаем место где хранятся контейнеры и информация по их настройкам, а также место кеширования данных дистрибутивов для ускорения создания множества контейнеров:
$ mkdir /${lxcRoot}/lxclib /${lxcRoot}/lxccache
Удалим старый каталог:
$ rm -rf /var/lib/lxc /var/cache/lxc
Создадим ссылки на каталоги:
$ ln -s /${lxcRoot}/lxclib /var/lib/lxc
$ ln -s /${lxcRoot}/lxccache /var/cache/lxc
Создаем базовый LXC-контейнер на основе Ubuntu с именем hName и с версией Trusty:
$ lxc-create -t ubuntu -n hName -r trusty
Далее приступим к созданию неизменяемой части LXC-контейнера.
Переходим в каталог созданного контейнера:
$ cd /lxc/lxclib/hName/rootfs
В нем создаем каталог с общей частью, назовем его common:
$ mkdir common
Переносим в него неизменяемые каталоги:
$ mv bin lib lib64 sbin usr common/
Создаем символические ссылки на них:
$ ln -s common/bin
$ ln -s common/sbin
$ ln -s common/lib
$ ln -s common/lib64
$ ln -s common/usr
Создание контейнера LXC
После подготовки базового образа системы приступим непосредственно к созданию первого контейнера в системе. Назовем его просто «Node1»:
Создаем каталог для первого контейнера:
$ mkdir -p /lxc/lxclib/Node1/rootfs
Переходим в него:
$ cd /lxc/lxclib/Node1/rootfs
При помощи программы rsync копируем неизменяемую часть в первый контейнер:
$ rsync --exclude=/dev/* --exclude=/common/* -avz /lxc/lxclib/hName/rootfs/* ./
Далее для первого контейнера создаем два каталога для общей части и для устройств:
$ mkdir /lxc/lxclib/Node1/rootfs/common
$ mkdir /lxc/lxclib/Node1/rootfs/dev
Монтируем их при помощи программы Bind:
$ mount --bind /lxc/lxclib/hName/rootfs/dev /lxc/lxclib/Node1/rootfs/dev
$ mount --bind /lxc/lxclib/hName/rootfs/common /lxc/lxclib/Node1/rootfs/common
$ mount -o remount,ro /lxc/lxclib/Node1/rootfs/common
Копируем файл конфигурации и файл fstab из базового контейнера в первый:
$ cp /lxc/lxclib/hName/config /lxc/lxclib/Node1/
$ cp /lxc/lxclib/hName/fstab /lxc/lxclib/Node1/
Меняем имя в конфигурации первого контейнера на Node1, а также MAC-адрес:
$ nano /lxc/lxclib/Node1/config
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий