systemd サービスで docker run が開始されたがすぐにシャットダウンしてから再起動しますが、シェルでは docker run が正常に動作します。

systemd サービスで docker run が開始されたがすぐにシャットダウンしてから再起動しますが、シェルでは docker run が正常に動作します。

私のCentOS 7.2システムでは、Docker 1.10.3を使用して以下を正常にテストしました(rootとして実行)。

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では正しく起動するようですが、数秒後にすぐに終了する理由を知っていますか?

関連情報