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

最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,下面小

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

最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,下面小编把我实现过程分享到3399IT网平台,需要的朋友参考下

目录

启动docker停止dockerPython调用脚本

最近日常测试中经常需要手动启动或停止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服务,希望对大家有所帮助!

本文为网络共享文章,如有侵权请联系邮箱485837881@qq.com

作者: Surpassme

为您推荐

返回顶部