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 ブロックレベルタグとインラインタグの違い

推薦する

MySQL 8.0 オンライン DDL クイック列追加の概要

目次問題の説明MySQLオンラインDDLで列を追加する従来の方法01 コピー方法02 インプレースメ...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

MySQL での正規表現の使用に関する詳細

目次1. はじめに2. 製品テーブルを準備する2.1 ステートメントの順序2.2 大文字と小文字の区...

JS配列の一般的な方法とテクニックを学び、マスターになりましょう

目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...

Vue2.0でデータの双方向バインディング機能をjsを使って実装する

Object.definePropertyの理解文法:オブジェクト.defineProperty(o...

mysql 解凍パッケージの基本インストールチュートリアル

新しいコンピューターに変更したので、すべての環境を新しいコンピューター上で設定する必要があります。ふ...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

MySQL の char、varchar、text フィールド タイプの違い

MySQL では、char、varchar、text の各タイプのフィールドはすべて文字タイプのデー...

TypeScript 列挙型

目次1. 概要2. デジタル列挙2.1 逆マッピング3. 文字列の列挙4. const列挙5. まと...

MySQL での Truncate の使用法の詳細な説明

序文:テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合...

ウィンドウの中央にブロック要素の位置を設定する方法

ウィンドウの中央にブロック要素の位置を設定する方法ブロック要素をウィンドウの中央に配置する上記の方法...

太陽系の惑星のアニメーション効果を実現するHTML+CSS3コード

太陽系の 8 つの惑星(衛星を除く)のアニメーションを作成します。すべての惑星は太陽の周りを回ってい...

Vue を通じて QR コードスキャン機能を実装する

ヒントこのプラグインは https プロトコルでのみアクセスできます。http プロトコルはうまく機...

Ubuntuがインターネットに接続できない場合の解決策

問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...

リクエスト数を制限するために Ajax 同時リクエストを実装するために js を使用するサンプル コード

問題の説明: 非同期リクエストの数が不確定な場合、数百の http リクエストが瞬時に発生したときに...