欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Shell腳本批量啟停Docker服務(wù)

 更新時(shí)間:2019年11月10日 08:13:46   作者:Surpassme  
最近日常測(cè)試中經(jīng)常需要手動(dòng)啟動(dòng)或停止docker,于是決定寫一個(gè)Shell腳本來代替人工操作,下面小編把我實(shí)現(xiàn)過程分享到腳本之家平臺(tái),需要的朋友參考下

最近日常測(cè)試中經(jīng)常需要手動(dòng)啟動(dòng)或停止docker,于是決定寫一個(gè)Shell腳本來代替人工操作,另外該腳本,也可以通過Python腳本實(shí)行遠(yuǎn)程調(diào)用,詳細(xì)如下所示:

目前該腳本是將Container ID寫死在腳本中,當(dāng)然也可以通過傳參給腳本來進(jìn)行控制,大家可以改造一下。

啟動(dòng)docker

啟動(dòng)腳本詳細(xì)如下所示:

#!/bin/bash
containerIDs="ad3e4d7fc407 a228730a915f ad3e4d7fc4099"
statusLived="live"
statusdead="Dead"
notExistContainer="None"
retryCount=3
function GetContainerStatus(){
 containerExist=$(sudo docker ps -a | grep -i $1 | wc -l ) 
 if [ ${containerExist} -gt 0 ]
  then
  pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 )
  if [ "${pid}" != "0" ]
   then 
   echo "${statusLived}"
  else
   echo "${statusdead}"
  fi
 else
  echo "${notExistContainer}" 
 fi
}
function StartContainer(){
 sudo docker restart $1
}
for containerID in ${containerIDs}
 do
 for((i=1;i<=${retryCount};i++))
 do
 status=$(GetContainerStatus ${containerID} )
 echo "Container ${containerID} status is ${status}"
 if [ "${status}" == ${statusLived} ]
  then
  echo "Container ${containerID} already running"
  break
 fi
 if [ "${status}" == ${notExistContainer} ]
  then
  echo "Container ${containerID} not existed"
  break
 fi
 if [ "${status}" == ${statusdead} ]
  then
  echo "Container ${containerID} stopped ,start container"
  StartContainer ${containerID}
  verifyStatus=$(GetContainerStatus ${containerID} )
  if [ "${verifyStatus}" == ${statusLived} ]
   then
    echo "start container ${containerID} success "
    break
  else
   echo "${i} retry start container"
   StartContainer ${containerID}
  fi
 fi
 done
done

停止docker

停止腳本詳細(xì)如下所示:

#!/bin/bash
containerIDs="589bda1309cd ad3e4d7fc407 a228730a915f ad3e4d7fc4099"
statusLived="live"
statusdead="Dead"
notExistContainer="None"
retryCount=3
function GetContainerStatus(){
 containerExist=$(sudo docker ps -a | grep -i $1 | wc -l ) 
 if [ ${containerExist} -gt 0 ]
  then
  pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 )
  if [ "${pid}" != "0" ]
   then 
   echo "${statusLived}"
  else
   echo "${statusdead}"
  fi
 else
  echo "${notExistContainer}" 
 fi
}
function StopContainer(){
 sudo docker stop $1
}
for containerID in ${containerIDs}
 do
 for ((i=1;i<=${retryCount};i++))
 do
  status=$(GetContainerStatus ${containerID} )
  echo "Container ${containerID} status is ${status}"
  if [ "${status}" == ${statusdead} ]
  then
  echo "Container ${containerID} already stopped"
  break
  fi
  if [ "${status}" == ${notExistContainer} ]
  then
  echo "Container ${containerID} not existed"
  break
  fi
  if [ "${status}" == ${statusLived} ]
  then
   echo "Container ${containerID} is lived ,stop container"
   StopContainer ${containerID}
   verifyStatus=$(GetContainerStatus ${containerID} )
   if [ "${verifyStatus}" == ${statusdead} ]
   then
    echo "stop container ${containerID} success "
    break
   else
   echo "${i} retry stop container"
   StopContainer ${containerID}
   fi
  fi
 done
done

Python調(diào)用腳本

Python示例腳本如下所示:

import paramiko
def StartContainer(svr,port,user,pwd):
 client = paramiko.SSHClient()
 client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 client.connect(svr,port=port, username=user, password=pwd,timeout=5)
 client.exec_command("cd /home/TestCode/ && bash startContainer.sh")
def StopContainer(svr,port,user,pwd):
 client = paramiko.SSHClient()
 client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 client.connect(svr, port=port, username=user, password=pwd, timeout=5)
 client.exec_command("cd /home/TestCode/ && bash stopContainer.sh ")

總結(jié)

以上所述是小編給大家介紹的使用Shell腳本批量啟停Docker服務(wù),希望對(duì)大家有所幫助!

相關(guān)文章

  • Docker本地部署Firefox火狐瀏覽器并遠(yuǎn)程訪問的流程

    Docker本地部署Firefox火狐瀏覽器并遠(yuǎn)程訪問的流程

    在Docker中打開Firefox意味著我們將在一個(gè)Docker容器中運(yùn)行Firefox瀏覽器,下面是一個(gè)簡(jiǎn)單的示例,演示如何在Docker中打開Firefox,本次實(shí)踐部署環(huán)境為本地環(huán)境,感興趣的朋友一起看看吧
    2023-11-11
  • Docker搭建自己的本地鏡像倉(cāng)庫的步驟

    Docker搭建自己的本地鏡像倉(cāng)庫的步驟

    今天小編就為大家分享一篇關(guān)于Docker搭建自己的本地鏡像倉(cāng)庫的步驟,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • docker 啟動(dòng)具有多個(gè)網(wǎng)絡(luò)接口的容器的方法示例

    docker 啟動(dòng)具有多個(gè)網(wǎng)絡(luò)接口的容器的方法示例

    這篇文章主要介紹了docker 啟動(dòng)具有多個(gè)網(wǎng)絡(luò)接口的容器的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式

    Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式

    這篇文章主要介紹了Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用?docker?部署?APISIX的詳細(xì)介紹

    使用?docker?部署?APISIX的詳細(xì)介紹

    這篇文章主要介紹了使用?docker?部署?APISIX的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Docker 容器操作指令匯總詳解

    Docker 容器操作指令匯總詳解

    這篇文章主要介紹了Docker 容器操作指令匯總詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • mysql8.4.0實(shí)現(xiàn)主從復(fù)制部署

    mysql8.4.0實(shí)現(xiàn)主從復(fù)制部署

    主從復(fù)制是 MySQL 中一種用于實(shí)現(xiàn)數(shù)據(jù)冗余、提高可用性和性能的重要機(jī)制,本文主要介紹了mysql8.4.0實(shí)現(xiàn)主從復(fù)制部署,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Docker搭建Portainer可視化界面步驟詳解

    Docker搭建Portainer可視化界面步驟詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于Docker搭建Portainer可視化界面的實(shí)例操作方法,需要的朋友們參考下。
    2019-10-10
  • Docker搭建部署Node項(xiàng)目的方法步驟

    Docker搭建部署Node項(xiàng)目的方法步驟

    本文主要介紹了Docker搭建部署Node項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決Jenkins集成docker插件問題的一些方法

    解決Jenkins集成docker插件問題的一些方法

    本文主要介紹了Jenkins集成docker插件問題的一些方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論