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

推薦する

Java+Tomcat 環境の展開とインストールのプロセス図

次に、Centos7 に Java+Tomcat をインストールします。インターネット上には多くの記...

Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

下図のように、 selectポップアップレイヤーの下部に操作ボタンを配置するのが一般的な設計方法です...

フロントエンド開発者は毎日HTMLタグの理解を学ばなければならない(1)

2.1 セマンティクス化により、Webページが検索エンジンに理解されやすくなりますこの章では、We...

挿入前にレコードが既に存在するかどうかを確認するには、SQL ステートメントを使用します。

目次SQL文を挿入する前にレコードが既に存在するかどうかを確認するSQL挿入時の判断の簡単なコレクシ...

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

Bootstrapグリッドの垂直および水平配置の詳細な説明

目次1. Bootstrap グリッドレイアウト2. 垂直方向の配置2.1 行タグの垂直方向の配置を...

Nexus サーバーを設定するための詳細な手順

1. ネクサスサービス構築の意義イントラネットの統合プロキシとして、チームで共同開発する場合、全員が...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

vue keep-alive の簡単な概要

1. 機能主にコンポーネントの状態を保持したり、再レンダリングを回避したりするために使用されます。 ...

LinuxでTomcatのポート番号を変更する方法

ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...

Apache Bench ストレステストツールの実装原理と使用状況分析

1: スループット(1秒あたりのリクエスト数)サーバーの同時処理能力を定量的に表したもので、reqs...

Docker Composeを使用してDOCleverをインストールする詳細なプロセスを説明します

目次1. Docker Composeとは何か、インストールして使用する方法2. DOCleverと...

MySQL のインデックス障害の一般的なシナリオと回避方法

序文これまでにも、一部の SQL ステートメントを不適切に使用すると MySQL インデックスが失敗...

img 画像タグに alt 属性を付与する必要がありますか?

img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...

前後の秒、分、時間、日数を取得するMySQLデータベース

現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...