1. 首页
  2. 技术知识

使用Shell脚本批量启停Docker服务

目录

    启动docker</strong>
    停止docker
    Python调用脚本

最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,另外该脚本,也可以通过Python脚本实行远程调用,详细如下所示:

目前该脚本是将Container ID写死在脚本中,当然也可以通过传参给脚本来进行控制,大家可以改造一下。

启动docker

启动脚本详细如下所示:

#!/bin/bash

containerIDs=”ad3e4d7fc407 a228730a915f ad3e4d7fc4099″

statusLived=”live”

statusdead=”Dead”

notExistContainer=”None”

retryCount=3

functiоn 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

}

functiоn 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

停止脚本详细如下所示:

#!/bin/bash

containerIDs=”589bda1309cd ad3e4d7fc407 a228730a915f ad3e4d7fc4099″

statusLived=”live”

statusdead=”Dead”

notExistContainer=”None”

retryCount=3

functiоn 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

}

functiоn 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调用脚本

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 “)
总结

以上所述是小编给大家介绍的使用Shell脚本批量启停Docker服务,希望对大家有所帮助!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108619.html

联系我们