スウォームモードでDockerを実行するときにHEALTHCHECK
が実際に何に使用されるのかを理解するのに苦労しています。
1つの場所が示唆しています Dockerがrestart異常と見なされるタスクを実行します。 別の場所 は、Dockerが異常なタスクへのトラフィックの送信を停止することを説明しています。 Dockerのドキュメント 自体は、HEALTHCHECK
ディレクティブの概要と設定方法のみを説明しています。タスクが異常になったときに何が起こるかを説明しようとはしません。
言い換えれば、HEALTCHECK
が実際に何をしているのかについての明確で信頼できる説明を見つけるのに苦労しています。
さらに、 Docker REST API を見ると、この特定のデータ(タスクは正常かどうか)はタスクに公開されていません(コンテナに公開されています)ただし、これにより、このメトリックをDocker Swarmの監視に使用することが難しくなります。そのため、これがメトリックの主な目的であるとは思えません。
Dockerをスウォームモードで実行しているときにタスクが異常になると、実際にはどうなりますか?
最初のリンクが提案するのと同じ方法でヘルスチェックを設定します。これらすべての方法は、実行するコマンド、実行する頻度などをdockerに指示します。
docker run
を使用してコンテナーを開始すると、ヘルスチェックが失敗したときにUIが異常と表示されますが、Dockerはコンテナーに対して何も実行しません。それを実行するかどうかは、あなたまたはより高レベルの監視ソリューション次第です。
docker service create
(またはdocker stack deploy
)を使用してSwarmサービスを作成し、そのヘルスチェックが失敗した場合、タスク(コンテナ)を停止/終了し、新しいタスクを再スケジュールして、サービスのそのレプリカを置き換えます。停止/キル中(正常に停止しようとしますが、すべてのDockerコンテナーのように10秒後に強制終了します)、Swarmは、すべての停止タスクの場合と同様に、そのタスクへのオーバーレイ受信トラフィックを停止します。