Docker version 17.09.0-ce
を使用しています.
コンテナを異常な状態に保つ代わりに、コンテナを再起動するオプションがありますか?.
不健康なコンテナ機能の再起動は元のPR( https://github.com/moby/moby/pull/22719 )にありましたが、議論の後に削除され、機能拡張として後で行われると見なされましたRestartPolicy。
現時点では、この回避策を使用して、不健康なコンテナを自動的に再起動できます。 https://hub.docker.com/r/willfarrell/autoheal/
サンプルの構成ファイルを次に示します。
version: '2'
services:
autoheal:
restart: always
image: willfarrell/autoheal
environment:
- AUTOHEAL_CONTAINER_LABEL=all
volumes:
- /var/run/docker.sock:/var/run/docker.sock
これに対してdocker-compose up -d
を実行するだけです
スタンドアロンコンテナの場合、ヘルスチェックの失敗時にコンテナを再起動するネイティブ統合はありませんが、Dockerイベントとスクリプトを使用して同じことを実現できます。ヘルスチェックはSwarmとより良く統合されています。ヘルスチェックがSwarmに統合されているため、サービス内のコンテナが異常な場合、Swarmは自動的に異常なコンテナをシャットダウンし、新しいコンテナを起動して、サービスのレプリカカウントで指定されたコンテナカウントを維持します。
Dockerには、コンテナーの状態に関する詳細を取得する方法がいくつかあります。ヘルスチェックと実行頻度を設定できます。また、httpなどのコンテナー内で実行されているアプリケーションでヘルスチェックを実行できます(これはcurl --fail
オプションを使用します)。health_status
イベントを表示して詳細を取得できます。
異常なコンテナの詳細については、inspectコマンドが便利です。docker inspect --format='{{json .State.Health}}' container-name
( https://blog.newrelic.com/2016/08/24/docker-health-check-instruction/)を参照してください 詳細については。)
最初に「異常」タグの原因となるエラー状態を解決する必要があります(ヘルスチェックコマンドが実行され、終了コード1を取得するたびに)。エラーに応じて、Dockerがコンテナを再起動する必要がある場合とそうでない場合があります。 コンテナが自動的に を起動/再起動する場合、起動エラーをトラップするか、エラーをログに記録し、ヘルスチェックステータスを使用すると、エラーに迅速に対処できます。自動起動に関心がある場合は、リンクを確認してください。
https://codeblog.dotsandbrackets.com/docker-health-check/
コンテナを作成し、「restart:always」を追加します。
ヘルスチェックの使用では、次の点に注意してください。
スタンドアロンコンテナの場合、ヘルスチェックの失敗時にコンテナを再起動するネイティブ統合はありませんが、Dockerイベントとスクリプトを使用して同じことを実現できます。ヘルスチェックはSwarmとより良く統合されています。ヘルスチェックがSwarmに統合されているため、サービス内のコンテナが異常な場合、Swarmは自動的に異常なコンテナをシャットダウンし、新しいコンテナを起動して、サービスのレプリカカウントで指定されたコンテナカウントを維持します。