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時代のエッジコンピューティングとは?

推薦する

ついに誰かがSaaSを明確にした

[[405394]]この記事はWeChatの公開アカウント「Big Data DT」から転載したもの...

#11.11# onetechcloud: すべての VPS が 20% オフ (トップアップは 10% オフ)、米国 3 ネットワーク CN2 GIA (ネイティブ IP)\香港 CN2\日本 CN2

onetechcloud は、毎年恒例のダブル イレブン特別プロモーションをお届けします。米国の 3...

ウェブサイト分析: ウェブページのコアコンテンツが視覚的なパフォーマンスに与える影響

「情報の最適化と洗練は常にデザインの第一歩です。」これは、Baidu Alliance User E...

I Love My Homeのクラウドベースの変革

[51CTO.comからのオリジナル記事] IBMの変革から不動産仲介業へ、コンサルティングからビジ...

SEOトラフィック設計におけるXiong Zhanghaoの重要な役割とそれを活性化する方法は何ですか

月給5,000~50,000のこれらのプロジェクトはあなたの将来です熊張豪は、百度が2017年末に開...

ファーウェイの張秀正氏:FusionPlantで広東省と協力し、デジタル化を深め、産業のデジタル変革を加速

5月16日、 「デジタルインテリジェンスを深め、より良いことを実現する」をテーマにした2023年ファ...

王同福氏による SEO に関する最初の会議を聞く (パート 1)

2012年5月25日午後8時、昨夜でした。筆者はYYのSutu Online Salon第11回に参...

海外サーバーレンタル、各種サーバー、紹介割引コードなど

海外サーバーレンタルのご紹介:クラスターサーバー、ライブ放送サーバー、オンライン再生サーバー、スライ...

ウェブサイト構築の 6 つのステップ: 新しいウェブサイトの重量を改善するのは夢ではありません (パート 2)

前回の記事「ウェブサイト構築の6つのステップ:新規サイトの重量を改善するのは夢ではない(パート1)」...

電子商取引の事例:ニーズから生まれた電子商取引の代理店業務

邵斌潔氏(左から1人目)の電子商取引代理運営会社は、写真撮影から陳列、顧客サービス、注文受付、倉庫保...

エッジコンピューティングが企業のセキュリティ構築に与える影響と動向

エッジコンピューティングは、エッジデバイスにインテリジェンスを統合する分散型テクノロジーとして、クラ...

Google PR 価値 VS Baidu 重み、ウェブマスターは何をすべきでしょうか?

グーグルが国内市場で徐々に衰退するにつれ、百度が検索エンジンの支配的地位を獲得した。多くのウェブマス...

VMware は通信事業者が 5G のパワーを最大限発揮できるよう支援します

VMware(NYSE:VMW)は本日、Mobile World Congress 2023 にお...

#本当に良いもの# テンセントクラウド: (クラウドサーバー) たったの99元/年、香港\北京\上海\南京\成都\広州\深センなどのコンピュータールーム

テンセントクラウドは、国内のクラウドサーバー業界で「良心的なクラウド」という評判を博しており、毎月固...