Зачем использовать lxc вместо chroot?

10

Один сервер Ubuntu размещает 3 приложения в разных доменах.
Каждое приложение имеет своих разработчиков.
Разработчики приложений принадлежат к группе Linux "sftp".
chrootразрешает доступ по паролю sftp каждому разработчику приложения.

/home/app1/prod
/home/app2/prod
/home/app3/prod

В sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

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

Должны ли мы использовать контейнер lxc вместо chroot? Почему? Будет ли изменение в контейнерах lxc прозрачным для разработчиков приложений?

ЦСИ
источник
2
Единственное, что chrootнужно сделать, это изменить корневой каталог процесса. Он не предлагает никакой изоляции или чего-либо еще.
Zoredache

Ответы:

14

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

Контейнеры Linux имеют несколько особенностей / преимуществ:

Преимущества:

Лучшая изоляция по сравнению с chroot (chroot jail). Низкие накладные расходы. LXC использует минимальные ресурсы с точки зрения оперативной памяти и места на жестком диске без дополнительных затрат на установку гостевой ОС на виртуальной машине (VMWare / VirtualBox / KVM).

Приложения и сервисы (серверы) работают на родной скорости.

В libvirt есть поддержка Linux-контейнеров.

Контейнеры Linux хорошо работают с btrfs.

Но есть и обратная сторона:

Контейнеры Linux запускают процессы Linux на ядре Linux. Это означает, что вы можете запускать Linux (контейнер Fedora на хосте Ubuntu), но не другие операционные системы (не BSD / OSX / Windows).

Нет графических (GUI) интерфейсов для настройки или управления контейнерами.

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

Абхишек Ананд Амралкар
источник
1
какое ядро ​​используется внутри LXC? (от хозяина или гостя?)
Франческо
4
Многие преимущества и недостатки сравнивают LXC с полной виртуализацией, что не имеет отношения к заданному вопросу и, возможно, даже вводит в заблуждение.
Роджер Дуек
@Francesco, с LXC (и контейнерами Linux в целом), есть только одно ядро ​​- ядро ​​хоста. Некоторыми исключениями из этого являются, например, Docker, работающий на MacOS или Windows, поскольку они используют ядро ​​Linux, работающее на виртуальной машине; однако все контейнеры Linux на этих платформах все еще используют одно и то же ядро.
ярость