首页 > 网站 > 帮助中心 > 正文

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

2024-07-09 22:41:32
字体:
来源:转载
供稿:网友

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

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

启动docker

启动脚本详细如下所示:

#!/bin/bashcontainerIDs="ad3e4d7fc407 a228730a915f ad3e4d7fc4099"statusLived="live"statusdead="Dead"notExistContainer="None"retryCount=3function 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 donedone

停止docker

停止脚本详细如下所示:

#!/bin/bashcontainerIDs="589bda1309cd ad3e4d7fc407 a228730a915f ad3e4d7fc4099"statusLived="live"statusdead="Dead"notExistContainer="None"retryCount=3function 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 donedone
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表