LINUX.ORG.RU

Конфигурация контейнера, команды после его запуска

 ,


0

1

Я хочу сделать контейнер с systemd на основе RHEL ubi8-init. При настройке этого контейнера я хочу выполнить команды, которые должны выполняться уже при запущенном systemd.

Например такой Containerfile:

FROM ubi8-init
RUN ps aux > /root/ps.txt

Если я построю и запущу такой контейнер, то в /root/ps.txt будет что-то вроде

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  11920  2688 ?        Ss   10:37   0:00 /bin/sh -c ps aux > /root/ps.txt
root           2  0.0  0.0  44668  3460 ?        R    10:37   0:00 ps aux

Т.е. в нём ничего не запущено на этапе выполнения инструкции RUN кроме самой команды.

Мне же нужно, чтобы запустился ubi8-init (с systemd), «сбоку» выполнилась эта команда (аналогично тому, как я это могу делать через podman exec), он остановился и полученный образ уже запаковался в контейнер.

Есть ли такая возможность у docker/podman?

Про то, что я могу это сделать руками/скриптом и потом сделать commit, я в курсе, но хочется это сделать через Dockerfile/Containerfile.

★★★★★

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

только на русских форумах вырезают аппендицит через гланды

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

Только на русском форуме вместо того, чтобы отвечать на вопрос, тебе десять раз объяснят, что тебе это не нужно (с)

Да, и будут правы (c)

Ты хочешь какую-то дичь. Прямой ответ на твой вопрос — нет, такой возможности нет.

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

Не вижу, в чём тут дичь. Есть официальный образ от RH с systemd внутри. Значит юз-кейс востребованный. Большинство systemd команд требует, очевидно, запущенного systemd. Т.е. для настройки такого контейнера нужен этот самый запущенный systemd. Если контейнер такого не умеет, то это недостаток, а не я хочу дичь. В чём проблема запустить ENTRYPOINT перед выполнением команд из RUN, а потом его остановить, я не понимаю. Просто фичу не сделали, вот и весь сказ.

Кстати тут предлагают примерно такую же дичь. Человеку нужно mysql схему создать. Для этого создают скрипт, который запускает mysql, прогоняет скрипт, тушит mysql. А всё это делалось бы одной тривиальной командой, если бы докер умел ту фичу, которая мне нужна.

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

Большинство systemd команд требует, очевидно, запущенного systemd. Т.е. для настройки такого контейнера нужен этот самый запущенный systemd.

Неправ ты вот тут. Всякие там скриптлеты не дёргают systemctlи, а делают эквивалентные действия с учётом того, что systemd может быть и не запущен. Делай и ты.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.