Dockerコンテナのネイティブヘルスチェックメカニズムの詳細な説明

Dockerコンテナのネイティブヘルスチェックメカニズムの詳細な説明

なぜヘルスチェックメカニズムが必要なのでしょうか?

ヘルス チェック メカニズムは、サービスの可用性をチェックし、サービスが利用できない場合は、可用性を回復するためにサービスを適時に再起動するために使用されます。前回の記事「Kubernetes で livenessProbe、readinessProbe、startupProbe を構成する」では、Kubernetes のさまざまなヘルスチェックの種類と構成方法について説明しました。この記事では、Docker コンテナのヘルスチェックのメカニズムについて説明します。

上記の記事を読んだ人なら、サービス自体のヘルスチェックを実行する必要がある理由をきっと理解できるでしょう。 Docker を例にして説明しましょう。 Docker デーモンはコンテナの実行と管理に使用されます。コンテナ内の PID 1 のプロセスを監視します。実際、実際のシナリオでは、PID 1 のプロセスだけを監視するだけでは不十分です。たとえば、コンテナ内のサービスでデッドロックが発生した場合、サービスはユーザー要求を処理できませんが、PID 1 のプロセスは引き続き実行されています。

Docker ヘルスチェックメカニズム

Docker の健全性を確認するには 2 つの方法があります。

  • ヘルスチェック戦略を構成するには、Dockerfile で HEALTHCHECK コマンドを使用します。
  • コンテナを起動するときにヘルスチェック ポリシーを構成します (docker run コマンド)。

DockerfileのHEALTHCHECKコマンドを使用してヘルスチェック戦略を設定します。

HEALTHCHECK を使用して Dockerfile でヘルスチェック ポリシーを宣言すると、コンテナの起動後にヘルスチェックが自動的に実行されます。 HEALTHCHECK は次のオプションをサポートしています。

  • --interval=<interval>: 2 つのヘルスチェック間の間隔。デフォルト値は 30 秒です。
  • --timeout=<timeout>: ヘルスチェック コマンドを実行するためのタイムアウト。この時間を超過すると、ヘルスチェックは失敗とみなされます。デフォルト値は 30 秒です。
  • --retries=<再試行回数>: 指定された回数連続して再試行すると、コンテナのステータスが異常に設定されます。デフォルトは3回です。
  • --start-period=<interval>: アプリケーションの起動時間(起動時のヘルスチェックの失敗を除く)。デフォルトは 0 秒です。

以下に使用例をいくつか示します。

 from elasticsearch:latest HEALTHCHECK --interval=5s --timeout=2s --retries=3 \ CMD curl --silent --fail localhost:9200/_cluster/health || exit 1

Dockerfile には HEALTHCHECK を 1 つだけ記述するのが最適です。複数の HEALTHCHECK を記述した場合、最後のものだけが有効になります。

CMDコマンドの戻り値には次の3種類があります。

  • 0、成功;
  • 1. 失敗
  • 2. 値を予約し、使用しないでください。

docker run を実行すると、コンテナの初期状態が起動します。設定された間隔時間を待機した後、ヘルス チェックが開始されます。単一のチェックの戻り値が 0 でない場合、またはチェック時間がタイムアウトを超えた場合、チェックは失敗したとみなされます。ヘルス チェックが再試行回数を超えて連続して失敗すると、状態が「不正常」に変わります。ヘルスチェックの結果が成功すると、コンテナは正常状態に設定されます。

コンテナの起動時にヘルスチェックポリシーを構成する(docker runコマンド)

次に例を示します。

 $ docker run --rm -d \ --name=es \ --health-cmd="curl --silent --fail localhost:9200/_cluster/health || exit 1" \ --health-interval=5s \ --health-timeout=2s \ --health-retries=3 \ elasticsearch:latest

パラメータは最初の方法と同じ意味を持ちます。ヘルス チェック コマンドの出力はヘルス ステータスに保存され、docker inspect コマンドで表示できます。

まとめ

この記事では、非常に便利な Docker のネイティブ ヘルス チェック メソッドを 2 つ紹介します。現在主流のコンテナ オーケストレーション フレームワークには、ヘルス チェック機能も組み込まれています。この場合、Docker のネイティブ ヘルス チェック メソッドを使用する必要はありません。

<<:  K8S を学びたいなら、DaemonSet は非常に重要です!収集する価値がある

>>:  5G時代のエッジコンピューティングとは?

推薦する

中国青年報:なぜ代表チームはインターネットが苦手なのか

数億ドルをかけて3年間も運用されてきた国営検索エンジンですが、その市場シェアは1万分の1以下で、利用...

SEOプロモーションマスターがBaiduライブラリに簡単にトラフィックを集める方法を教えます

月収10万元の起業の夢を実現するミニプログラム起業支援プランウェブサイトの SEO 最適化を行う場合...

JVM における TLAB の謎を解明

[[413891]]この記事はWeChatの公開アカウント「プログラマーの成長」から転載したもので、...

エッジコンピューティングをクラウドコンピューティングアーキテクチャに統合することの利点と欠点

[[430276]]エッジ コンピューティングは、エッジ デバイス (エッジ ノードとも呼ばれます)...

racknerd の 29% オフ VPS の簡単なレビュー。racknerd の仕組みを大まかに説明します (-8K HD、HBO を視聴可能)

racknerdの特別VPSのKVMモデルを29%割引で手に入れました。racknerdがどんなもの...

gcoreはどうですか? gcore 韓国 VPS 簡単評価、データ共有

gcoreはどうですか? gcore Koreaはどうですか? gcore 韓国 VPS はどうです...

動的ウェブサイトを静的ウェブサイトに変換する際の問題の分析

ウェブサイトの開発は、静的から動的へのトレンドを経て、現在では動的から新しい静的へと戻っています。検...

事例: マーケティング キャンペーンにソーシャル メディアを活用する 8 つのヒント

編集:@因他暖susu編集者注ソーシャル メディアでは、さまざまなコンテストや懸賞が最も一般的なプロ...

アプリを目立たせるためのASO最適化戦略

App Store には何百万ものアプリがあります。自分のアプリを目立たせるにはどうすればよいでしょ...

hostgator-60% オフ/VPS 最低 $8/仮想ホスト/リセラー/サーバー

Hostgator、新年中全品40%オフ、残り1日間有効、公式サイトにイベントタイマーあり。 Hos...

検索マーケティングのトレンドを理解し、ウェブサイトの最適化の方向性を見つける

検索エンジンの出現により、ユーザーのインターネット アクセスの効率が効果的に向上し、人々のインターネ...

#BlackFriday# servarica、安価な大容量ハードドライブ VPS: 年間 29 ドル、2G メモリ/2 コア/1T ハードドライブ/無制限トラフィック

servarica は、10 年以上運営されており、ネイティブ IP を持つカナダの VPS ブラン...

OpenStack は Ceph ストレージを使用します。 Ceph は何をしますか?

[[212344]] 1 背景1.1 Ceph の紹介Ceph は、高いスケーラビリティ、高いパフォ...

中小企業の電子商取引にとって、マーケティングチームの構築が唯一の解決策

最近、私はインターネット企業の営業マンから、主に自社のビジネスを宣伝する電話を多数受けています。中小...

仮想クラウドデスクトップでの作業がトレンドになる

2020年を通じて、パンデミックの影響でリモートワーカーの数が増加しています。その数が増え続けるにつ...