2016-12-27 11 views
0

の作品、ドッカー1.10.3で、私は正常に(rootとして実行)、次のテスト:ドッキングウィンドウの実行が、すぐに出て、再起動しますが、シェルからのドッキングウィンドウの実行は、私のCentOSの7.2ボックスで細かい

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 

I手動で再ロードにsystemdサービスを開始しました。別のボックスにあるブラウザがApacheのプロセスに到達し、適切に配信されたコンテンツを取得できることを確認しました。その後、再起動時に再起動するよう再起動しました。まだ働いています。

だから私はやったと思った。しかし、私が近く見ると気づいたことは、サービスが正常に開始されたことですが、起動後すぐに終了して再起動します。これは継続的に起こっている。これは単純なHTMLコンテンツ(javadocツリー)が提供され、サービスがただちに再開するため、ユーザーは問題があることに気付かないかもしれませんが、間違いなくこのことを行うべきではありません。

"docker run"がシェルからうまく動作し、systemdからうまく始まりますが、数秒後にすぐ終了する理由はありますか?

答えて

1

実行コマンドから-dオプションを削除します。 docker docs

ExecStart=/usr/bin/docker run --name usljavadoc_server -p 80:80 -p 443:443 -v /opt/app/uslJavadoc/:/var/www/html/ eboraas/apache 

説明されています

をデタッチモードでコンテナを起動するには、あなたは真= -d使用するか、単に オプションを-d。コンテナの実行に使用された ルートプロセスが終了すると、コンテナが分離モードで終了するように設計されています。

ExecStartの後にクライアントが終了します。 Systemdはこれをエラーとして表示し、ExecStopコマンドを実行します。+再起動を試みます(restart=always

関連する問題