LINUX.ORG.RU

Замена systemd для докера, не требующая привиллегий

 ,


0

2

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

Для этого правильно и разумно сделать что-то типа:

docker run --rm ubuntu-systemd test.sh

где в test.sh будет:

#!/bin/bash

apt install -y mypackage
service mypackage start
run-tests.sh

Т.е. тут важно протестировать, что вся цепочка: deb, postinst, systemd units работает исправно

systemd агрессивно требует каких-то хитростей типа privilleged и т.п.

Это точно нужно? Может быть есть какой-то урезанный вариант, который не будет уметь некоторых нужных и полезных в продакшне вещей, но запустит цепочку процессов?

Ответ на: комментарий от max_lapshin

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

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

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

systemd-nspawn посмотрю, спасибо

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

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

А раз так, то ты будешь тестировать не то же самое, что поставляешь своим пользователям.

Так что смотри в сторону других контейнеров, а не другого псевдо-systemd.

intelfx ★★★★★
()

systemd можно поднять внутри докер-контейнера, и это даже не очень сложно (в сети много мануалов), но - суть в том что докер и systemd пилятся разными коммерческими компаниями, которые не дружат друг с другом. Поэтому какой-то нормальной интеграции у них точно не будет.

Поэтому я бы не стал рассчитывать на такой сетап и смотрел в сторону podman и spawn, как тут в общем уже написали. В крайнем случае можно конвертировать контейнер в OCI-бандл и запустить тем же nspawn-ом

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

Как альтернатива, можно запускать легковесные виртуальные машины вместо контейнеров. Там у system-d будет все необходимое для работы.

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

понял, спасибо.

контейнер я собираю сам, так что мне в целом что докер собрать, что другой формат — пофиг. Да и судя по описанию systemd-nspawn, достаточно просто докер образ распаковать на диск.

max_lapshin ★★★★★
() автор топика
7 февраля 2024 г.