LXC Linux Containers часть №10. Панели управления

Оглавление

Существует несколько проектов, позволяющих более удобно использовать те средства что предоставляет LXC. Например, LXC Web Panel имеет приятный web-интерфейс, и предоставляет возможность создавать, удалять и задавать различные параметры контейнеров в понятной для человека форме (см. Рис. 1). Есть еще одна обвязочка под названием Docker. Этот проект позволяет упаковать приложения (в основном — веб) в контейнеры LXC. После такой упаковки, контейнер становится самостоятельным приложением которое возможно запустить на любом стороннем сервере или облачной платформе. Как минимум, так было заявлено в описании продукта на официальном сайте.Этот проект должен прийтись по вкусу веб-разработчикам.

Читать дальше

LXC — Linux Containers

LXC tutorial

В этом и последующем цикле статей проводится детальный, технический разбор существующих сегодня технологий и продуктов для виртуализации на уровне ОС.
В этой работе, речь пойдет о наборе компонентов и функций ядра Linux, под названием LXC (Linux Con­tain­ers). Следующая работа, будет посвящена более продвинутому и функциональному продукту под названием OpenVZ. В этих материалах, будет на сколько это возможно раскрыты их технические особенности, примеры установки и настройки.

Читать дальше

LXC — Linux Containers часть №9. Ограничение ресурсов

Оглавление

Этот вопрос — один из самых актуальных. Если речь идет о производственной среде, то контроль вычислительных ресурсов и их ограничение в каждом из экземпляров является очень важным. Во-многом, это залог стабильность и производительность всей инфраструктуры. Посмотрим что для этого может предоставить нам LXC.

Первое, что бросается в глаза при выполнении команд free -m и df в консоли любого экземпляра ОС так это то, что можно увидеть, а главное использовать все ресурсы хоста. По умолчанию, нет не каких ограничений.

Читать дальше

LXC Linux Containers часть №8. Безопасность

Оглавление

Пожалуй наиболее серьезной проблемой безопасности контейнеров LXC является то, что несмотря на разделенные пространства имён (namespace), UID 0 пользователя root так же имеет значение 0 и в хост-системе. Если каким то образом выйти из контейнера используя файловые системы proc, sys (есть проблемы их изоляции) или системные вызовы, то потенциально, можно стать супер-пользователем и на хост-системе. Эта проблема должна полностью решиться с выходом LXC 1.0. В этой версии, появляется возможность создавать непривилегированные контейнеры в пользовательском пространстве имен (user namespaces). Если совсем кратко, то всем пользователям контейнеров, а, точнее, их UID будут присваиваться особые UIDы хоста. В результате пользователь контейнера с UID 0 в случае побега, в хост-системе, будет иметь например UID 10001. Подробно, о том как это работает и как этим пользоваться уже можно почитать в интернете.

Читать дальше

LXC Linux Containers часть №7. Обмен данных с контейнером

Оглавление

Контейнер — это все го лишь набор файлов и директорий расположенный внутри хостовой файловой системы. Доступ к его содержимому можно получить стандартными средствами, но правильнее это сделать через виртуальную файловую систему proc:

$ sudo cd /proc/8897/root

 8897 – это PID контейнера, который можно узнать с помощью утилиты:

$ sudo lxc-info –n <containet_name>

Читать дальше

LXC Linux Containers часть №6. Сетевое взаимодействие

Оглавление

Как гласит документация, в lxc существует четыре основных вида виртуализации сети контейнеров. Это довольно обширная тема, по этому я постараюсь кратко рассказать про каждый тип.

empty — без сети. В контейнере будет создан только интерфейс обратной связи (lo, 127.0.0.1).
veth — использование сетевого стека хост системы. Эта схема используется по умолчанию. На хосте создается мост который подключается к одному из физических интерфейсов. При запуске контейнера с таким типом сети, на хосте создается специальный виртуальный интерфейс коммутируемый к мосту. Этот виртуальный интерфейс (хост системы) фактически и использует контейнер для взаимодействия с внешней средой.
macvlan — этот тип виртуализации сети предоставляет более сложные механизмы, позволяя изолировать контейнеры друг от друга или от хост-системы.
phys
— в этом режиме, физический сетевой интерфейс хоста может быть отдан одному из контейнеров. При этом, для самого хоста или других контейнеров, этот интерфейс станет не доступным.

Читать дальше

LXC Linux Containers часть №5. Хранилище контейнеров, снимки, клоны

Оглавление

LXC-контейнеры совместимы с файловыми системами ZFS, Btrfs и томами LVM. При размещении контейнеров на хранилищах такого типа, будут использоваться их встроенные средства для создания моментальных снимков и даже задействована дедупликация (ZFS).

В случае, если хранилище контейнеров находится на томе с файловой системой Btrfs, средства администрирования LXC-контейнеров, будут создавать, логический подтом (subvolume) для каждого нового контейнера. Подобная ситуация и с LVM. В качестве хранилища может быть указанна группа томов (volume group) в которой автоматически будет создан логический раздел для создаваемого экземпляра ОС. Явно задать тип хранилища можно с помощью ключа -B. Вот как выглядит создание нового контейнера на этих хранилищах:

$ sudo lxc-create -t ubuntu -n u001 -B Btrfs

после выполнения команды, можно увидеть новый, одноименный под-том (subvolum) Btrfs:

$ sudo Btrfs subvolume list /var/lib/lxc

ID 256 gen 17 top level 5 path u001/rootfs

Читать дальше

LXC Linux Containers часть №4. Шаблоны контейнеров

Оглавление

Что есть шаблон? Это обычный bash-скрипт который автоматически создает все нужные каталоги для chroot-среды, конфигурационные файлы и производит загрузку всех необходимых пакетов (обычно минимальный дистрибутив). К сожалению, на просторах интернета, довольно часто встречаются проблемы с развертыванием того или иного дистрибутива. В моем случае, в каталоге /usr/share/lxc/templates/ присутствует достаточно много шаблонов (см. рис. №2). Загрузка и установка минимальных дистрибутивов ubuntu и Debianwheezy прошли без запинки. Для «не родных» экземпляров типа CentOS 6.5 и Fedora 20 необходимо предварительно установить в базовую систему(Ubuntu) пакеты yum и rpm и все также пройдет гладко.

Читать дальше

LXC Linux Containers часть №3. Базовые действия

Оглавление

Для выполнения различных действий с контейнерами, предназначен ряд простых утилит, названия которых начинаются с префикса lxc-*.

Читать дальше

LXC Linux Containers часть №2. Установка

Оглавление

Одно из главных преимуществ LXC, это присутствие его базовых блоков (cgroups и namespaces) практически во всех современных ядрах Linux. Это означает что нет необходимости что-то компилировать или использовать стороннее ядро, как в случае с OpenVZ. Единственное, что необходимо установить, это пакет утилит управления. В моем случае использовался Ubuntu Linux 13.10 как дистрибутив с наиболее свежей пакетной базой. Все проделанные в этой статье манипуляции будут проводиться на его примере.

Я не стану описывать процесс установки этого дистрибутива, так как он примитивен и не требует пояснений. Единственное, о чем стоит сказать, так это о разметке и распределении пространства на жестких дисках. По умолчанию каталог в котором будут храниться контейнеры и их конфигурация монтируется в /var/lib/lxc. Так же, в директорию /var именно в /var/cache/lxc помещается кэш шаблонов. По этому, при установке, имеет смысл указать для этой точки монтирования, отдельный раздел, жесткий диск или RAID-массив достаточного объема. Параметры монтирования для указанных каталогов LXC можно будет изменить и после установки системы, но лучше об этом задуматься сразу. Объем одного контейнера составляет примерно 250-300 Мб на диске.

Читать дальше