
Релиз LXC 1.0, системы изолированных контейнеров Linux |
![]() |
![]() |
![]() |
21.02.14 15:41 |
Представлен первый стабильный выпуск инструментария LXC 1.0, официально объявленный пригодным для промышленного применения. В рамках проекта развивает набор работающих в пространстве инструментов для организации работы изолированных контейнеров, позволяющих изолировать процессы и ресурсы при помощи штатных механизмов ядра Linux, таких как пространства имён (namespaces) и группы управления (cgroups). Поддержка выпуска исправлений для ветки LXC 1.0 будет осуществляться в течение пяти лет. Готовые пакеты с LXC 1.0 подготовлены для Ubuntu Linux. В отличие от технологий виртуализации на основе гипервизоров, контейнеры выполняются под управление единого ядра Linux, без необходимости запуска отдельного ядра и набора драйверов в каждом окружении. По своим возможностям контейнеры занимают нишу между изоляцией при помощи chroot и полноценными средствами виртуализации. В состав инструментария LXC входит библиотека liblxc, набор утилит (lxc-create, lxc-start, lxc-stop, lxc-ls и т.п.), шаблоны для построения контейнеров и набор биндингов для различных языков программирования. Для изоляции процессов, сетевого стека ipc, uts и точек монтирования используется механизм пространств имён (namespaces). Для ограничения ресурсов применяются cgroups. Кроме того, для понижения привилегий и ограничения доступа задействованы такие возможности ядра, как профили Apparmor и SELinux, политики Seccomp, Chroots (pivot_root) и capabilities. Ключевые улучшения в LXC 1.0:
Пример использования контейнеров:
# Создадим контейнер с именем "p1", используя шаблон "ubuntu"
sudo lxc-create -t ubuntu -n p1
# Запустим контейнер в фоне
sudo lxc-start -n p1 -d
# Войдём в контейнер через консоль (для выхода нужно набрать ctrl-a + q)
sudo lxc-console -n p1
# Войдём в контейнер через запуск bash, минуя логин
sudo lxc-attach -n p1
# Войдём в контейнер через SSH:
sudo lxc-info -n p1
ssh ubuntu@полученный_ip
# Заморозим состояние контейнера
sudo lxc-freeze -n p1
# Разморозим состояние контейнера
sudo lxc-unfreeze -n p1
# Пробросим устройства в контейнер
sudo lxc-device add -n p1 /dev/ttyUSB0 /dev/ttyS0
# Создадим снапшот (при размещении контейнера в LVM или Btrfs)
sudo lxc-snapshot -n p1 -c snap-comment
sudo lxc-snapshot -n p1 -L -C
# Откатим состояние на созданный снапшот
sudo lxc-snapshot -n p1 -r snap0
# Создадим новый контейнер на основе снапшота
sudo lxc-snapshot -n p1 -r snap0 p1-snap0
# Завершим работу контейнера
sudo lxc-stop -n p1
# Принудительно закроем контейнер
sudo lxc-stop -n p1 -k
# Для настройки сети создадим файл конфигурации
cat /var/lib/lxc/p1/config
# Проброс физического сетевого интерфейса
lxc.network.type = phys
lxc.network.link = eth2
lxc.network.name = eth1
# Создание виртульного сетевого интерфейса
lxc.network.type = veth
lxc.network.hwaddr = 00:16:3e:3a:f1:c1
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.name = eth0
Read more http://www.opennet.ru/opennews/art.shtml?num=39154 |
