![systemd 서비스에서 docker run이 시작되었지만 즉시 종료된 다음 다시 시작되지만 쉘에서 docker run이 제대로 작동합니다.](https://linux55.com/image/101733/systemd%20%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%EC%84%9C%20docker%20run%EC%9D%B4%20%EC%8B%9C%EC%9E%91%EB%90%98%EC%97%88%EC%A7%80%EB%A7%8C%20%EC%A6%89%EC%8B%9C%20%EC%A2%85%EB%A3%8C%EB%90%9C%20%EB%8B%A4%EC%9D%8C%20%EB%8B%A4%EC%8B%9C%20%EC%8B%9C%EC%9E%91%EB%90%98%EC%A7%80%EB%A7%8C%20%EC%89%98%EC%97%90%EC%84%9C%20docker%20run%EC%9D%B4%20%EC%A0%9C%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 CentOS 7.2 시스템에서 Docker 1.10.3을 사용하여 다음을 성공적으로 테스트했습니다(루트로 실행).
docker run --name usljavadoc_server -p 80:80 -p 443:443 -v /opt/app/uslJavadoc/:/var/www/html/ -d eboraas/apache
자동으로 배포된 콘텐츠는 /opt/app/uslJavadoc
컨테이너에서 실행되는 Apache를 통해 제공됩니다.
그래서 다음 단계는 systemd와 함께 작동하도록 하는 것이었기 때문에 /etc/systemd/system/docker-usljavadoc.service
다음을 사용하여 이를 만들었습니다.
[Unit]
Description=Apache serving USL Javadoc
Requires=docker.service
After=docker.service
[Service]
TimeoutStartSec=0
Restart=always
ExecStart=/usr/bin/docker run --name usljavadoc_server -p 80:80 -p 443:443 -v /opt/app/uslJavadoc/:/var/www/html/ -d eboraas/apache
ExecStop=/usr/bin/docker stop -t 2 usljavadoc_server
ExecStopPost=/usr/bin/docker rm -f usljavadoc_server
[Install]
WantedBy=default.target
systemd를 수동으로 다시 로드하고 서비스를 시작합니다. 다른 컴퓨터의 브라우저가 Apache 프로세스에 액세스하여 콘텐츠가 올바르게 제공되는지 확인했습니다. 그런 다음 재부팅 후 제대로 작동하는지 확인하기 위해 재부팅했습니다. 아직도 일하고 있어요.
그래서 나는 끝났다고 생각했습니다. 그런데 자세히 보니 서비스가 성공적으로 시작되었으나 시작하자마자 종료되었다가 다시 시작되는 것을 발견했습니다. 이런 일이 계속해서 일어나고 있습니다. 이는 일반 HTML 콘텐츠(javadoc 트리)만 제공하고 서비스가 즉시 다시 시작되므로 사용자는 문제가 있다는 사실조차 인식하지 못할 수도 있지만 절대 이렇게 해서는 안 됩니다.
이 "docker run"이 셸에서 제대로 실행되고 systemd에서는 제대로 부팅되는 것처럼 보이지만 몇 초 후에 즉시 종료되는 이유에 대해 알고 계시나요?