Estou tentando criar um pipeline de integração contínua e isso exige que eu instale um arquivo abc.deb dentro do contêiner.
O arquivo debian/control inclui:
Depends: ${python3:Depends}, ${misc:Depends}, python3-webpy, systemd
O arquivo debian/rules inclui (apenas a parte relevante mostrada abaixo):
%:
dh $@ --with=python3,systemd
override_dh_systemd_start:
dh_systemd_start -p<application>
override_dh_installinit:
dh_systemd_start
Meu Dockerfile se parece com:
FROM <relevant base image>
COPY results/*.deb /packages/
RUN export DEBIAN_FRONTEND=noninteractive && apt-get update && \
apt-get install -y --no-install-recommends --auto-remove \
dumb-init \
procps \
/packages/*.deb && \
apt-get autoremove -y && \
apt-get autoclean -y && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apt
CMD tail -f /dev/null
Quando eu docker exec dentro do docker e faço ps aux, recebo:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2388 756 ? Ss 11:51 0:00 /bin/sh -c tail -f /dev/null
Como posso ter o systemd como PID 1? sempre por dizer idiota!
Tentei consultar vários artigos, parece que não é possível, requer confirmação do mesmo. Os bons são (para citar alguns):
https://lwn.net/Articles/676831/
https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
Responder1
ComoGracefulRestartmencionado no comentário, você pode construir a partir da imagem base do systemd. Por exemplo,centos-systemd. Mas definitivamente não é recomendado usar o systemd dentro de um contêiner docker. Dê uma olhada no meupergunta relacionada.
Se você precisa do systemd apenas para atender às dependências, a melhor maneira éignorar a dependência deb.