Как я могу использовать systemctl из контейнера докеров (запускается на ubuntu 20.04, с базой ubuntu 18.04)

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

Systemd отображается как PID 1, когда я запускаю top, но ни одна из служб, которые я активировал через systemctl, не запущена, и попытка получить статус systemctl дает мне система не была загружена с systemd в качестве процесса инициализации (PID 1 )

Вот мой файл докеров:

FROM ubuntu:20.04

ENV container docker
ENV LC_ALL C
ENV DEBIAN_FRONTEND noninteractive

RUN sed -i 's/# deb/deb/g' /etc/apt/sources.list

RUN apt-get update \
    && apt-get install -y systemd systemd-sysv \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN cd /lib/systemd/system/sysinit.target.wants/ \
    && ls | grep -v systemd-tmpfiles-setup | xargs rm -f $1

RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
    /etc/systemd/system/*.wants/* \
    /lib/systemd/system/local-fs.target.wants/* \
    /lib/systemd/system/sockets.target.wants/*udev* \
    /lib/systemd/system/sockets.target.wants/*initctl* \
    /lib/systemd/system/basic.target.wants/* \
    /lib/systemd/system/anaconda.target.wants/* \
    /lib/systemd/system/plymouth* \
    /lib/systemd/system/systemd-update-utmp*

...assorted aptget installs...

ENV LOCAL="yes"

...assorted utils scripts...

RUN useradd --create-home fractal \
    && usermod -aG sudo fractal \ 
    && echo 'fractal:password1234567.' | chpasswd

...assorted utils scripts...

ADD bootstrap.sh /home/fractal
ADD entry.sh /home/fractal
ADD fractal-input.rules home/fractal

RUN chmod +x /home/fractal/bootstrap.sh \
    && chown -v -R fractal:fractal /home/fractal
RUN chown root:root /run/user
RUN chmod +x /home/fractal/entry.sh


...adding assorted services...

VOLUME [ "/sys/fs/cgroup" ]

RUN systemctl set-default multi-user.target
ENV init /lib/systemd/systemd


....assorted services enabled....

CMD ["/lib/systemd/systemd"]

0
задан 28 August 2020 в 14:49

1 ответ

Вы не можете без особых усилий использовать systemd в контейнере Docker. Вместо этого большинство людей используют что-то вроде supervisord.

0
ответ дан 28 August 2020 в 11:53

Другие вопросы по тегам:

Похожие вопросы: