LINUX.ORG.RU
ФорумAdmin

LXC устарел?

 


1

4

Решил попробовать LXC как одну из технологий для запуска контейнеров без рута. Выгреб просто кучу проблем, кое-как запустил, но не всё хорошо. 22.04 LTS убунта, apt install lxc, и дальше пошло:

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

Запускаю lxc-create -t download, создаю убунту. Дальше lxc-start и получаю Device or resource busy - Could not enable "+memory +pids" controllers in the unified cgroup. Везде в интернете пишут что надо systemd-run --unit=myshell --user --scope -p "Delegate=yes" lxc-start <container-name>, но это совершенно не помогает. После прочтения половины интернета читаю уже документацию ядра про устройство cgroups, оказывается нельзя включать контроллеры в группе, где уже есть процессы, нужно переместить себя в дочернюю группу, и продолжить настраивать родительскую. Набросал скрипт, заменяющий lxc-start, где хожу прямо в /sys/fs/cgroup, внезапно запустилось. В systemd вроде бы для этого завезли отдельную опцию, но у меня старая версия.

Долго не понимал как попасть в контейнер, никакой из паролей не подходил, оказалось надо lxc-attach -u 1000 --clear-env <container-name>, по умолчанию оно зачем-то пробрасывает env из хоста. А пользователи все без паролей, только через аттач и надо пользоваться.

Дальше при apt update полезли массово ошибки подключения ipv6. Какого рожна он там вообще есть я не понял, не нашёл как выключить в конфиге lxc. Попытался подцепить хук, но хук из конфига, судя по TRACE вообще не подсасывается, не говоря уже о попытке запуститься.

Несмотря на то, что версия не самая старая, 5.0.0, опыт первого использования прям полон боли и страданий. В интернете тишина, как будто lxc пользуется три с половиной крокодила на весь мир. В связи с чем вопрос: а оно вообще актуально? Лучше podman/unprivileged docker? Мне нравится как они сделали uid mapping, в контейнере можно быть рутом и не подозревать что на хосте ты nobody со случайным номером. Но не нравится количество всего что не хочет просто так работать.


Никогда не использовал запуск контейнеров без рута.

По сути это виртуальная машина без накладных расходов. Такой chroot на стеройдах :)

lxc очень удобен если тебе нужно держать связку сервисов, а не 1 сервис как в докере.

В убунтах с lxc беда. Нужно самому много самому настраивать.

lxd не зашёл совсем.

Пример применения:

Есть проект BigBlueButton. Это охрененная связка сервисов и работает только под строго определёнными версиями убунты. Он требует «реалтайма», который не получить в условиях полной виртуализации (qemu и др.).

Выделять под него отдельный физический сервер не всегда имеет смысл т.к. больше 10-12 ядер он не может использовать. На нормальном сервере можно запустить несколько BBB серверов в виде lxc-контейнеров, что позволяет более полно использовать имеющиеся ресурсы.

vel ★★★★★
()

Если тебе интересно посмотреть то просто возьми proxmox. Если тебе обязательно нужно на своей рабочей машине, то придётся разбираться.

sin_a ★★★★★
()

Да, пожалуй и устарел, и не только технологически, но и идеологически. В шапке его вообще нет, например.

читаю уже документацию ядра про устройство cgroups

Это в любом случае полезно.

i586 ★★★★★
()

В связи с чем вопрос: а оно вообще актуально?

Я раньше гонял, а потом устал разбираться с проблемами и понял, что оно ненужно.

Лучше podman/unprivileged docker?

distrobox полностью покрывает всё, для чего я раньше использовал lxc.

rupert ★★★★★
()

Как может устареть минимальный комплект для управлением «системой изоляций/контейнеризаций» ядра linux?
Просто за счет его максимальной упрощенности нужно изучать технологии и соответственно будет больше телодвижений.
А это слабо совместимо с возможностью «автоматизированно-стандартизировано» с использование простеньких руководств для «админов за 15 минут».

Atlant ★★★★★
()

Все вышеотписавшиеся, как обычно, несут хрень.


В связи с чем вопрос: а оно вообще актуально?

Нет, по большому счёту неактуально, смотри systemd-nspawn (если по-быстрому) или LXD Incus (если в продакшен).

Лучше podman/unprivileged docker?

Тёплое и мягкое.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)

Гоняю десяток lxc контейнеров в проде в proxmox, бед не знаю. Использую pct (enter, push, start, stop) для менеджмента и веб для создания контейнеров и бекапа. Рекомендую.

skyman ★★★
()
Ответ на: комментарий от DALDON

docker - это для одного приложения.

В докере нет такого ограничения.

По теме — не вижу ни одной причины не использовать докер. Зачем тебе lxc?

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

если уж у тебя systemd, то чего тогда не systemd-nspawn?

типичный подход lxc/lxd с их -t download всегда вызывал изумление. Это что, оно хрен пойми что хрен пойми кем собранное выкачивает — ну нафиг!

demidrol ★★★★★
()
Ответ на: комментарий от DALDON

Но, вся аркестрация и т.п. - под это. :)

Я не понимаю, что ты хочешь сказать этой фразой. По-моему это какая-то байка из разряда «в докере нельзя хранить данные». Что ты понимаешь под оркестрацией и чему там мешают множество запущенных приложений?

LXC удобней когда надо относительно полноценную ОС.

Относительно полноценную ОС надо запускать в виртуалке. А так - нет никакой проблемы под докером запустить systemd, в котором запустить ssh, к примеру. Чем это будет хуже lxc - я не знаю. Чем это будет лучше - это я могу рассказать - концепцией повторяемости и эфемерности. Ну и тем, что докер поддерживается везде, а lxc это так, первые робкие попытки использовать контейнеры.

vbr ★★★★
()