• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用Shell脚本批量启停Docker服务

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

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

    启动docker

    启动脚本详细如下所示:

    #!/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

    停止脚本详细如下所示:

    #!/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调用脚本

    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服务,希望对大家有所帮助!

    上一篇:CentOS 服务器安全配置策略
    下一篇:centos6.5升级安装配置supervisor的教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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