使用Shell脚本批量启停Docker服务
最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,另外该脚本,也可以通过Python脚本实行远程调用,详细如下所示:
目前该脚本是将ContainerID写死在脚本中,当然也可以通过传参给脚本来进行控制,大家可以改造一下。
启动docker
启动脚本详细如下所示:
#!/bin/bash containerIDs="ad3e4d7fc407a228730a915fad3e4d7fc4099" statusLived="live" statusdead="Dead" notExistContainer="None" retryCount=3 functionGetContainerStatus(){ containerExist=$(sudodockerps-a|grep-i$1|wc-l) if[${containerExist}-gt0] then pid=$(sudodockerstats--format"{{.PIDs}}"--no-stream$1) if["${pid}"!="0"] then echo"${statusLived}" else echo"${statusdead}" fi else echo"${notExistContainer}" fi } functionStartContainer(){ sudodockerrestart$1 } forcontainerIDin${containerIDs} do for((i=1;i<=${retryCount};i++)) do status=$(GetContainerStatus${containerID}) echo"Container${containerID}statusis${status}" if["${status}"==${statusLived}] then echo"Container${containerID}alreadyrunning" break fi if["${status}"==${notExistContainer}] then echo"Container${containerID}notexisted" break fi if["${status}"==${statusdead}] then echo"Container${containerID}stopped,startcontainer" StartContainer${containerID} verifyStatus=$(GetContainerStatus${containerID}) if["${verifyStatus}"==${statusLived}] then echo"startcontainer${containerID}success" break else echo"${i}retrystartcontainer" StartContainer${containerID} fi fi done done
停止docker
停止脚本详细如下所示:
#!/bin/bash containerIDs="589bda1309cdad3e4d7fc407a228730a915fad3e4d7fc4099" statusLived="live" statusdead="Dead" notExistContainer="None" retryCount=3 functionGetContainerStatus(){ containerExist=$(sudodockerps-a|grep-i$1|wc-l) if[${containerExist}-gt0] then pid=$(sudodockerstats--format"{{.PIDs}}"--no-stream$1) if["${pid}"!="0"] then echo"${statusLived}" else echo"${statusdead}" fi else echo"${notExistContainer}" fi } functionStopContainer(){ sudodockerstop$1 } forcontainerIDin${containerIDs} do for((i=1;i<=${retryCount};i++)) do status=$(GetContainerStatus${containerID}) echo"Container${containerID}statusis${status}" if["${status}"==${statusdead}] then echo"Container${containerID}alreadystopped" break fi if["${status}"==${notExistContainer}] then echo"Container${containerID}notexisted" break fi if["${status}"==${statusLived}] then echo"Container${containerID}islived,stopcontainer" StopContainer${containerID} verifyStatus=$(GetContainerStatus${containerID}) if["${verifyStatus}"==${statusdead}] then echo"stopcontainer${containerID}success" break else echo"${i}retrystopcontainer" StopContainer${containerID} fi fi done done
Python调用脚本
Python示例脚本如下所示:
importparamiko defStartContainer(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/&&bashstartContainer.sh") defStopContainer(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/&&bashstopContainer.sh")
总结
以上所述是小编给大家介绍的使用Shell脚本批量启停Docker服务,希望对大家有所帮助!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。