컨테이너 내부에 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 종속성 무시.