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 со случайным номером. Но не нравится количество всего что не хочет просто так работать.


Гоняю докеры и куберы в Proxmox/LXC. Ты что-то явно делаешь не так. Например, пытаешься использовать LXC вместо Podman/Kaniko.

zimniy
()

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

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

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

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

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

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

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

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

vel ★★★★★
()

lxc - крутая штука. Это почти полноценная ОС. Тогда как docker - это для одного приложения.

DALDON ★★★★★
()

Если тебе интересно посмотреть то просто возьми 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 ★★★
()
Ответ на: комментарий от vel

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

Docker compose?

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

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

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

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

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

Ограничения, нет. Но, вся аркестрация и т.п. - под это. :) LXC удобней когда надо относительно полноценную ОС.

DALDON ★★★★★
()

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

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

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

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

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

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

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

vbr ★★★★
()

LXC устарел?

Нет. А вот докер не нужен никому кроме полуграмотных «разрабов».

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

О боже мой, какие ещё snap пакеты. Я не знаю, что это такое и знать не хочу. Но если в LXC можно, скорей всего и в докере можно.

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

Ну, как разберетесь в вопросе, приходите.

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

Докер по сравнению с lxc - унылое говно.

anonymous
()
Ответ на: комментарий от vbr

А так - нет никакой проблемы под докером запустить systemd

Это как? Модифицировать хост систему для этого? А докер разве не про переносимость?

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

Единственное, что там тёплое и мягкое это systemd-nspawn.

anonymous
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.