Назад | Перейти на главную страницу

Что такое контейнеры Linux в конце концов?

Я читал много документации по контейнерам Linux. Я также попробовал CentOS способ и Путь Ubuntu .

Википедия говорит

это виртуализация на уровне операционной системы.

Linuxcontainers.org говорит

LXC - это интерфейс пользовательского пространства для функций локализации ядра Linux.

Я не могу понять это.

  1. Является ли LXC просто пользовательским интерфейсом, и есть другой модуль ядра, который предоставляет функции контейнера.
  2. Или LXC что-то исправляется к ядру при установке пакета, а также предоставляет утилиты пользовательского пространства.
  3. Во время тестирования на CentOS установка lxc пакет не требовался, хотя он доступен в репозиториях.
  4. На CentOS без установки lxc демон libvirt может подключаться к lxc:/// с помощью утилиты команды libvirt. Так есть ли в ядре модуль lxc? Но я не нашел ничего с lsmod .
  5. НО, какой модуль в ядре обеспечивает контейнеризацию?

Это запутанная тема, потому что там не то, что «обеспечивает контейнеризацию». Контейнеры - это общее понятие реализовано в ядре Linux, используя пространства имен для изоляции процессов, cgroups для управления ресурсами и, возможно, многое другое - например, SELinux для безопасности.

В lxc инструменты являются одним из возможных интерфейсов к этому - вы можете думать об этом как о интерфейсе, хотя, возможно, лучше думать о нем как о «интерфейсе плюс клей». libvirt-lxc это одноименный, но совершенно другой инструмент, и systemd-nspawn еще один.

Docker - горячая тема контейнеров Linux. также слой пользовательского интерфейса и клея, но на самом деле он может располагаться над несколькими другими бэкэндами, включая любой из вышеперечисленных - см. это немного устаревшее сообщение в блоге о Docker 0.9, и, в частности, графическое объяснение libcontainer.

Дэн Уолш рассказал об этом на Usenix '13, что может быть полезно: https://www.usenix.org/conference/lisa13/secure-linux-containers (Отказ от ответственности: Дэн - мой коллега в Red Hat.)

  1. Да и нет. LXC - это просто пользовательский интерфейс, но не для модуля, а для некоторых функций ядра. В основном пространства имен процессов, пользователей, сети, монтирования, uts и ipcs, а также cgroups и другие вещи.

  2. Нет.

  3. Правильно, вы можете использовать те же функции или принципы ядра, используя другие инструменты администрирования.

  4. Как я сказал в своем первом сообщении, он использует определенные встроенные функции ядра Linux и не требует никаких модулей.

  5. Никто. Что ж, есть определенные функции, которые вам нужно включить при сборке ядра, но они не совсем модули. CentOS (созданный на основе RHEL) имеет их в конфигурации ядра.