도커 컨테이너에 있을 때 시스템이 PID 1을 얻지 못합니다.

도커 컨테이너에 있을 때 시스템이 PID 1을 얻지 못합니다.

컨테이너 내부에 abc.deb 파일을 설치해야 하는 지속적인 통합 파이프라인을 시작하려고 합니다.

데비안/제어 파일에는 다음이 포함됩니다:

Depends:  ${python3:Depends}, ${misc:Depends}, python3-webpy, systemd

debian/rules 파일에는 다음이 포함됩니다(아래에는 관련 부분만 표시됨).

%:
dh $@  --with=python3,systemd

override_dh_systemd_start:
    dh_systemd_start -p<application>

override_dh_installinit:
    dh_systemd_start

내 Dockerfile은 다음과 같습니다.

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

docker 내부에서 docker exec를 수행하고 ps aux를 수행하면 다음과 같은 결과를 얻습니다.

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

systemd를 PID 1로 어떻게 설정합니까? 어리석은 초기화에 대해 한 번 말했습니다!

여러 기사를 보았는데 불가능해 보여 동일한 내용을 확인해야 합니다. 좋은 점은 다음과 같습니다(몇 가지 예를 들면).

https://lwn.net/Articles/676831/

https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/

답변1

~처럼정상적인 재시작systemd 기본 이미지에서 빌드할 수 있다는 의견이 주석에 언급되어 있습니다. 예를 들어,centos 시스템 시스템. 그러나 도커 컨테이너 내부에서 systemd를 사용하는 것은 권장되지 않습니다. 내 것 좀 봐관련 질문.

종속성에 대해서만 체계화가 필요한 경우 더 나은 접근 방식은 다음과 같습니다.deb 종속성 무시.

관련 정보