LXC (LinuX Containers) — система виртуализации на уровне операционной системы, позволяющая исполнять множество изолированных Linux-систем (контейнеров) в одной системе, то-есть получить полноценную виртуализацию уровня операционной системы на одном экземпляре ядра и используя только его функции.
Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу. Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу.
LXC похож на Linux-VS и OpenVZ, за исключением того, что вместо внедрения в ядро соответствующих патчей ядра, он использует механизмы пространства имен (namespaces) и группировки процессов — cgroups (добавлено в версии ядра 2.6.24), доступные в любом современном Linux kernel.
Механизм пространства имен позволяет поместить выбранную группу процессов в независимое от основной системы окружение, которое может иметь собственный корень файловой системы, собственный список процессов, сетевой стек и систему межпроцессного взаимодействия.
Технология cgroups — это механизм группировки процессов и управления их ресурсами, такими как количество оперативной памяти, процессорные ресурсы, приоритеты ввода-вывода и доступа к сети.
Работая вместе, эти технологии реализуют очень мощную и гибкую систему виртуализации, возможности которой использует LXC, выступая в роли простого и удобного фронтенда к namespaces и cgroups.
Основные преимущества LXC — это возможность довольно гибко конфигурировать контейнеры, очень высокая степень безопасности и скорость работы — он быстрее, чем виртуализация, даже аппаратная, так как эмулировать ничего не надо.
Ну и основной недостаток, проистекающий от идеологии его построения — в контейнере могут функционировать только Linux системы.
Stéphane Graber (работает в Canonical в Ubuntu Foundations Team) и Serge Hallyn являются главными мейнтейнерами LXC.
До выхода первой версии LXC (LXC 1.0.0) работать с системой можно было только тестовом режиме: версии 0.X были достаточно сырыми и ненадежными.
LXC 1.0.0 явился результатом 10 месячной разработки и появился весной 2014 года в составе Ubuntu 14.04 LTS и был официально объявлен пригодным для промышленного применения. Первая версия является LTS — поддержка выпуска исправлений для ветки LXC 1.0 будет осуществляться в течение пяти лет.
В состав пакета LXC входит входит библиотека liblxc, набор утилит (lxc-create, lxc-start, lxc-stop, lxc-ls и т.п.), шаблоны для построения контейнеров и набор биндингов для различных языков программирования.
Данный релиз имеет огромный список изменений, тем не менее вот список наиболее главных изменений:
Ключевые улучшения в LXC 1.0:
- Надежность и стабильность работы;
- Поддержка полностью непривилегированных контейнеров — пользователи могут создавать и управлять контейнерами без использования root-привилегий;
- Большая часть функциональности LXC теперь может быть доступна через API, экспортируемый из liblxc;
- Поставка официальных биндингов для использования 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;
- Возможность запуска графического окружения внутри контейнера.
Работа с LXC описана нашей базе знаний.
Сайт команды разработчиков LXC — linuxcontainers.org.