2017-06-15 7 views
0

私は、このようなドッキングウィンドウ-compose.ymldocker-composeで `restart:on-failure`のエラーを通知する方法は?

server: 
    build: server 
    restart: on-failure 

を用意し、私はコンテナを再起動するコンテナ内のシェルスクリプトからエラーを送りたいです。 どうすればいいですか?

+0

デフォルトではコンテナが再起動しますが、どういう意味ですか? – Iman

+0

このコンテナでは、何かを検出するためにシェルスクリプトが実行されています。 そしてシェルスクリプトでサーバーコンテナ自体を再起動します。 – Harry

+0

コンテナを単独で再起動することを意味しますか? – Iman

答えて

3

コンテナはVMではなく、プロセス(考え方の一環)です。したがって、コンテナ内でのOSの再起動は意味をなさないため、不可能です。コンテナを殺す、停止する、またはコンテナを再起動する。

docker stop CONTAINER 
docker kill CONTAINER 
docker restart CONTAINER 

質問の文脈では、コンテナの仕様によっては、問題のコンテナを再起動することが最も効果的です。

あなたのシナリオに最適な解決策は、コンテナ内に/var/run/docker.sockをマウントし、Docker APIを使用してコンテナを単独で再起動することです。

hereに役立つライブラリとSDKのリストが表示されます。使用するには、コンテナ内に特定のSDKをインストールしてください。

希望します。

+0

ありがとうIman、 私はそれを試して、内部のコンテナからAPIを呼び出しました。 '' ' curl --unix-socket /var/run/docker.sock -X POST http:/v1.30/containers/xxxxx/restart?t = 5 ' '' エラーが発生しました。 '' ' curl:オプション--unix-socket:が不明です ' '' – Harry

+1

問題は '-v'オプションを使用してマウントする必要があることです。例えば ​​'docker run sth -v /var/run/docker.sock:/ var/run/docker.sock' @ハリー。 – Iman

+0

私はdocker-composeを使用しています そして、 ' - /private/var/run/docker.sock:/ var/run/docker.sock'をvolumesディレクティブに追加しました。 – Harry

関連する問題