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)

я хочу выполнить команды, которые должны выполняться уже при запущенном systemd.

обоснуй нужность. целые анаконды вполне себе без этого обходятся, а тебе вдруг «должны»

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

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

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

Ты хочешь какую-то дичь

Потому, что сервис изначально идёт с systemd-конфигурацией и я не хочу это менять

Но зачем? Скопируй просто команду запуска и настройки из systemd-сервиса в докерфайл.

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

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

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

Тему линканули, я уже всё настроил, хотел всё это в один красивый Containerfile организовать, но, похоже, не поддерживает такие юз-кейсы этот ваш докер/подман. Ну и ладно.

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

В смысле зачем? В той теме вроде всё написано. Запускать в нём cloudflare-warp и дополнительно ещё socat вторым сервисом, чтобы прокинуть порт наружу.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от 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)

a) Нет, нельзя.

б) Настройки не должны так храниться. Это нарушает statelessness.

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

б) Настройки не должны так храниться. Это нарушает statelessness.

И что? Контейнеры прекрасно сохраняют состояние между stop/start. Такое ощущение, что в церковь попал, а не на IT-форум. Того и гляди - анафеме предадут.

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

Ты даже текст не удосужился прочитать, только заголовок?

Legioner ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.