如何監控docker容器運行狀態 shell 腳本

場景

公司項目部署在docker中,由於未知原因容器偶爾會停止,需要寫一個腳本監控 容器運行狀態,如果容器停止瞭,就再啟動該容器

shell腳本

#!/bin/bash
# 傳入容器名稱
containerName=$1
currTime=`date +"%Y-%m-%d %H:%M:%S"`
# 查看進程是否存在
exist=`docker inspect --format '{{.State.Running}}' ${containerName}`
if [ "${exist}" != "true" ]; then
 docker start ${containerName}
 # 記錄
 echo "${currTime} 重啟docker容器,容器名稱:${containerName}" >> /mnt/xvde1/ms_ctynyd/scripts/wbwf_monitor.log
 
fi

定時任務crontab

crontab -e 進行 linux 定時任務的編輯

# 監控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

補充:shell腳本判斷某服務是否運行

shell腳本判斷某服務是否開啟

腳本如下:

#!/bin/bash
#檢查服務狀態,是否安裝
read -p "請輸入要檢測的服務:" SERVICE
netstat -anp | grep $SERVICE &> /dev/null
if [ $? -eq 0 ]
then
  echo "$SERVICE服務已經啟動!"
else
  rpm -q $SERVICE &> /dev/null
 
  if [ $? -eq 0 ]
  then
 echo "$SERVICE服務已安裝,正在啟動...."
    service $SERVICE start
  else
 echo "該服務未安裝!"
 fi
fi

結果如下:

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。