{{tag>linux container containers virtual}}

====== LXC ======

LXC это интерфейс в пространстве пользователя для функций сдерживания ядра Linux. Через мощный API и простые инструменты, он позволяет пользователям Linux легко создавать и управлять системными или прилагаемыми контейнерами.

===== Установка =====

<code bash>
$ mkdir  ~/.config/lxc
$ cp  /etc/lxc/default.conf ~/.config/lxc/default.conf
$ echo "lxc.id_map = u 0 100000 65536" >> ~/.config/lxc/default.conf
$ echo "lxc.id_map = g 0 100000 65536" >> ~/.config/lxc/default.conf
$ lxc-create -t debian -n my-container
</code>

==== Контейнеры ====

  * https://github.com/fgrehm/vagrant-lxc/wiki/Base-boxes
  * https://github.com/fgrehm/vagrant-lxc-base-boxes
  * debian
  * fgrehm/precise64-lxc
  * https://app.vagrantup.com/boxes/search?provider=lxc
  * http://www.vagrantbox.es/


===== Управление =====

<code bash>
$ lxc-start -n my-container -d
$ lxc-info -n my-container
$ lxc-attach -n my-container
$ lxc-stop -n my-container
$ lxc-destroy -n my-container
</code>

===== vagrant =====

Работа с контейнером чере vagrant

<code bash>
$ vagrant plugin install vagrant-lxc
</code>
===== Создание непривилегированного контейнера от root =====

Для запуска общесистемного непривилегированного контейнера (то есть, непривилегированного контейнера запущенного от root) вы должны следовать только части шагов ниже.

А именно, вам нужно вручную выделить диапазон uid и gid для root в /etc/subuid and /etc/subgid. А затем задать этот диапазон в /etc/lxc/default.conf используя такие же записи lxc.id_map как выше.

И все. Root не требует квоты на сетевые устройства и использует общий конфигурационный файл так что другие шаги не применяются.

Любой контейнер создаваемый вами от root с этого момента будет запущен непривилегированным.

===== Создание привилегированных контейнеров =====

Привилегированные контейнеры это контейнеры созданные root и запущенные от root.

В зависимости от дистрибутива Linux, они могут быть защищены некоторым сбросом привилегий, профилями apparmor, контекстом selinux или политиками seccomp но все равно, процессы до сих пор запускаются от root и вы не должны давать root доступ внутри привилегированного контейнера недоверенной стороне.

Если вам все еще необходимо создавать привилегированные контейнеры, это довольно просто. Не делайте ничего из настроек описанных выше и LXC будет создавать привилегированные контейнеры.

Так:

<code bash>$ sudo lxc-create -t download -n privileged-container</code>
Создаст новый "privileged-container" привилегированный контейнер на вашей системе используя образ и загруженного шаблона.
===== Особенности =====

Текущий LXC использует следующие функции ядра, что бы контейнизировать процессы:

  * Пространство имен ядра (ipc, uts, mount, pid, сетевые и пользовательские)
  * AppArmor и SELinux профили
  * Условия Seccomp
  * Chroots (используя pivot \ _root)
  * Возможности ядра
  * Контрольные группы (группы управления) (CGroups)

LXC контейнеры часто рассматривается как что-то середнее между Chroot и полноценной виртуальной машинеой. Цель LXC является создание среды максимально близкой к стандартной установке Linux, но без необходимости в отдельном ядре.

===== Компоненты =====

LXC в настоящее время состоит из нескольких отдельных компонентов:
  * The liblxc библиотека

Несколько языковых привязок для API:

  * Python3 (in-tree, поддержка в 1.0.x)
  * Lua (in-tree, поддержка в 1.0.x)
  * [Go] (https://github.com/lxc/go-lxc)
  * [Ruby] (https://github.com/lxc/ruby-lxc)
  * [Python2] (https://github.com/lxc/python2-lxc)
  * [Haskell] (https://github.com/fizruk/lxc)

Набор стандартных инструментов для управления контейнерами
Шаблоны контейнеров распространения

===== Лицензирование =====

LXC это свободное программное обеспечение, большинство из кода распространяется на условиях лицензии GNU LGPLv2.1 +, некоторые части Android совместимости, выпускаются под стандартную 2-п лицензии BSD, и некоторые бинарные файлы и шаблоны выпущен под лицензией GNU GPLv2.

Лицензия по умолчанию для проекта является GNU LGPLv2.1 +.

===== Поддержка =====

Стабильная поддержка релиза LXC опирается на дистрибутивы и их самостоятельные наработки, для внесения стабильных исправлений и обновлений безопасности.

Исходя из потребностей и имеющихся ресурсов из различных дистрибутивов, особые версии LXC могут заказать долгосрочную поддержку с частыми обновлениями исправлений.

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

Коммерческая поддержка для LXC на Ubuntu LTS-релизов могут быть получены из [Canonical Ltd] (http://www.canonical.com).

===== Расширенная поддержка =====

На данный момент, только релиз как LXC 1.0, который был выпущен в феврале 2014 года, будет поддерживаться до апреля 2019 года (немного более 5 лет).

Это стало возможным благодаря [Canonical Ltd] (http://www.canonical.com) и Ubuntu, которые включили LXC 1.0 в Ubuntu 14.04 LTS (Long Term Support) и работали в тесном сотрудничестве с LXC поддерживая стабильную 1.0 ветку.

Улучшить этот вебсайтНаверх
Содержимое распространяется по лицензии Creative Commons CC BY NC SA
Проект спонсируется Canonical Ltd.

====== Другие системы виртуализации ======

{{topic>[virtual]}}



