Релиз LXC 1.0, системы управления изолированными контейнерами Linux
21 февраля 2014 года
Представлен первый стабильный выпуск инструментария 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:
- Поддержка полностью непривилегированных контейнеров, работающих без возможности получения прав суперпользователя внутри;
- Стабилизация API (liblxc1) для создания и управления контейнерами;
- Поставка официальных биндингов для использования API в программах на языках python3, lua, ruby и Go;
- Гибкая система размещения контейнеров в различных типах хранилищ. Поддерживается размещение контейнеров в обычном дереве директорий, в ФС btrfs и zfs, в lvm, loop-устройствах, aufs и overlayfs;
- Поддержка клонирования работающих контейнеров и возможность заморозки их состояния через создание снапшотов;
- Сокращенный, но более целостный, набор утилит;
- Обновлённая и полноценная документация;
- Поддержка нескольких методов создания контейнеров на основе недавно сгенерированных образов;
- Поставка шаблонов для создания контейнеров на основе популярных дистрибутивов Linux. Шаблоны подготовлены для Alpine Linux, Alt Linux, Arch Linux, busybox, CentOS, Cirros, Debian, Fedora, OpenMandriva, OpenSUSE, Oracle, Plamo, sshd, Ubuntu Cloud и Ubuntu. В контейнере также можно запустить окружение Android;
- Возможность запуска графического окружения внутри контейнера. Пример запуска Google Chrome, Steam и Skype в отдельных контейнерах.
Пример использования контейнеров:
# Создадим контейнер с именем "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
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.