Dockerコンテナシェルスクリプトの実行ステータスを監視する方法

Dockerコンテナシェルスクリプトの実行ステータスを監視する方法

シナリオ

会社のプロジェクトはDockerでデプロイされています。原因不明ですが、コンテナが時々停止します。コンテナの実行状態を監視するスクリプトを作成する必要があります。コンテナが停止した場合は、コンテナを再起動します。

シェルスクリプト

#!/bin/bash
# コンテナ名を渡す containerName=$1
currTime=`日付 +"%Y-%m-%d %H:%M:%S"`
# プロセスが存在するかどうかを確認します =`docker inspect --format '{{.State.Running}}' ${containerName}`
[ "${exist}" != "true" ] の場合;
 docker を起動 ${コンテナ名}
 # 記録 echo "${currTime} restart docker container, container name: ${containerName}" >> /mnt/xvde1/ms_ctynyd/scripts/wbwf_monitor.log
 
フィ

スケジュールされたタスクの crontab

Linuxのスケジュールされたタスクを編集するにはcrontab -eを使用します

# docker 8081 コンテナをモニター*/1 * * * * sh /mnt/xvde1/ms_ctynyd/scripts/wbwf_monitor.sh server_wbwf_wbwf-app_1
# docker 7081 コンテナをモニター*/1 * * * * sh /mnt/xvde1/ms_ctynyd/scripts/wbwf_monitor.sh server_hb_hb-test-app_1

補足: シェルスクリプトはサービスが実行中かどうかを判定します

サービスが有効かどうかを判断するシェルスクリプト

スクリプトは次のとおりです。

#!/bin/bash
#サービスがインストールされているかどうかを確認するには、サービスの状態を確認します。read -p "テストするサービスを入力してください:" SERVICE
netstat -anp | grep $SERVICE &> /dev/null
[ $? -eq 0 ]の場合
それから
  echo "$SERVICE サービスが開始されました!"
それ以外
  rpm -q $SERVICE &> /dev/null
 
  [ $? -eq 0 ]の場合
  それから
 echo "$SERVICE サービスがインストールされ、起動しています..."
    サービス $SERVICE 開始
  それ以外
 echo "サービスはインストールされていません!"
 フィ
フィ

結果は次のとおりです。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Dockerはコンテナとホスト間でのシェルコマンドのシームレスな呼び出しを可能にします
  • DockerでLinuxシェルコマンドを実行する方法
  • シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明
  • ホスト上のDockerコンテナ内でシェルまたはプログラムを実行する
  • シェルスクリプトを使用して Docker サービスを一括で開始および停止する
  • シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

<<:  Web 開発チュートリアル クロスドメイン ソリューションの詳細な説明

>>:  HTML ブロックレベルタグとインラインタグの違い

推薦する

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

Web デザイン体験: 5 つの優れた Web デザイン コンセプトの完全分析 (画像)

他の種類のデザインとは異なり、Web デザインは時代の発展とともに常に変化しています。したがって、W...

vue3とvue2の利点の比較

目次利点1: diffアルゴリズムの最適化利点2: ホイスト静的静的リフティング利点3: cache...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

ウェブページを作るときに知っておくべきいくつかのスキル

1. IE6 では z-index が無効です。 CSS では、階層を変更するために z-index...

MySQLで日付を比較する方法の詳細な説明

データ型が datetime であるフィールド add_time を持つテーブル product が...

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

JS WebSocketを使用して簡単なチャットを実装する方法

目次ショートポーリングロングポーリングウェブソケットコミュニケーションの原則シンプルな1対1チャット...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

jQueryは居住地を選択するためのドロップダウンボックスを実装します

居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...

MySQLはこのような更新文を決して書きません

目次序文原因現象なぜ?分析要約する序文今日は、非常に典型的な MySQL の「落とし穴」についてお話...

MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

まず init-connect を通じて mysql 接続を初期化し、次にインスタンスに接続する必要...

HTMLタグIDは変数にできる

<table id=" <%=var1%>">、var1...

Linux システムによって報告される tcp_mark_head_lost エラーの処理方法

問題の説明最近、ホストから次のカーネル情報が報告されました。 7月8日 10:47:42 cztes...

Vueは動的コンポーネントを使用してTAB切り替え効果を実現します

目次問題の説明Vueの動的コンポーネントとはアプリケーションシナリオの説明実装手順ステップ 1 (新...