In letzter Zeit muss ich Docker bei täglichen Tests häufig manuell starten oder stoppen. Daher habe ich beschlossen, ein Shell-Skript zu schreiben, um die manuelle Bedienung zu ersetzen. Darüber hinaus kann das Skript auch remote über ein Python-Skript aufgerufen werden, wie unten gezeigt: Derzeit codiert das Skript die Container-ID fest im Skript. Natürlich können Sie sie auch steuern, indem Sie Parameter an das Skript übergeben. Sie können sie ändern. Starten Sie DockerDas Startskript sieht wie folgt aus: #!/bin/bash containerIDs="ad3e4d7fc407 a228730a915f ad3e4d7fc4099" statusLived="leben" statusdead="Tot" notExistContainer="Keine" Anzahl der Wiederholungen = 3 Funktion GetContainerStatus(){ ContainerExistiert=$(sudo docker ps -a | grep -i $1 | wc -l ) wenn [ ${containerExist} -gt 0 ] Dann pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 ) wenn [ "${pid}" != "0" ] Dann echo "${statusLived}" anders echo "${statusdead}" fi anders echo "${notExistContainer}" fi } Funktion StartContainer(){ sudo docker restart $1 } für Container-ID in ${containerIDs} Tun für((i=1;i<=${retryCount};i++)) Tun status=$(GetContainerStatus ${containerID} ) echo "Der Status des Containers ${containerID} ist ${status}" wenn [ "${status}" == ${statusLived} ] Dann echo "Container ${containerID} läuft bereits" brechen fi wenn [ "${status}" == ${notExistContainer} ] Dann echo "Container ${containerID} existierte nicht" brechen fi wenn [ "${status}" == ${statusdead} ] Dann echo "Container ${containerID} gestoppt, Container starten" StartContainer ${containerID} verifyStatus=$(GetContainerStatus ${containerID} ) wenn [ "${verifyStatus}" == ${statusLived} ] Dann echo "Container ${containerID} erfolgreich gestartet" brechen anders echo "${i} erneuter Versuch, Container zu starten" StartContainer ${containerID} fi fi Erledigt Erledigt Stoppen Sie DockerDas Stoppskript lautet wie folgt: #!/bin/bash containerIDs="589bda1309cd ad3e4d7fc407 a228730a915f ad3e4d7fc4099" statusLived="leben" statusdead="Tot" notExistContainer="Keine" Anzahl der Wiederholungen = 3 Funktion GetContainerStatus(){ ContainerExistiert=$(sudo docker ps -a | grep -i $1 | wc -l ) wenn [ ${containerExist} -gt 0 ] Dann pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1 ) wenn [ "${pid}" != "0" ] Dann echo "${statusLived}" anders echo "${statusdead}" fi anders echo "${notExistContainer}" fi } Funktion StopContainer(){ sudo Docker Stopp $1 } für Container-ID in ${containerIDs} Tun für ((i=1;i<=${retryCount};i++)) Tun status=$(GetContainerStatus ${containerID} ) echo "Der Status des Containers ${containerID} ist ${status}" wenn [ "${status}" == ${statusdead} ] Dann echo "Container ${containerID} bereits gestoppt" brechen fi wenn [ "${status}" == ${notExistContainer} ] Dann echo "Container ${containerID} existierte nicht" brechen fi wenn [ "${status}" == ${statusLived} ] Dann echo "Container ${containerID} ist leer, Container stoppen" Container stoppen ${containerID} verifyStatus=$(GetContainerStatus ${containerID} ) wenn [ "${verifyStatus}" == ${statusdead} ] Dann echo "Container ${containerID} erfolgreich stoppen" brechen anders echo "${i} erneut versuchen, Container zu stoppen" Container stoppen ${containerID} fi fi Erledigt Erledigt Python-AufrufskriptDas Python-Beispielskript lautet wie folgt: Paramiko importieren def StartContainer(svr,port,benutzer,pwd): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(svr,Port=Port, Benutzername=Benutzer, Passwort=pwd,Timeout=5) client.exec_command("cd /home/TestCode/ && bash startContainer.sh") def StopContainer(svr,port,benutzer,pwd): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(svr, Port=Port, Benutzername=Benutzer, Passwort=pwd, Timeout=5) client.exec_command("cd /home/TestCode/ && bash stopContainer.sh ") Zusammenfassen Oben habe ich Ihnen die Verwendung von Shell-Skripten zum Batch-Starten und -Stoppen von Docker-Diensten vorgestellt. Ich hoffe, es wird Ihnen hilfreich sein! Das könnte Sie auch interessieren:
|
<<: Konzept und Anwendungsbeispiele für die MySQL-Indexkardinalität
>>: Vue implementiert Studentenverwaltungsfunktion
Die Umgebung dieses Artikels ist Windows 10 und d...
Inhaltsverzeichnis Einrichten einer einfachen HTT...
1. Laden Sie das komprimierte Tomcat-Paket von de...
1. Systeminstallationspaket yum -y install make g...
Die Zeit vergeht immer überraschend schnell, ohne...
<br />Vorab muss ich sagen, dass ich ein abs...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel zeigt ein kleines Beispiel für das...
Der Installationsvorgang ist im Grunde derselbe w...
Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...
Dieser Artikel verwendet Javascript + CSS, um den...
[LeetCode] 183.Kunden, die nie bestellen Angenomm...
Vue kapselt die Breadcrumb-Komponente zu Ihrer In...
Inhaltsverzeichnis Download des Installationspake...
Szenario So rendern Sie Listen mit bis zu 10.000 ...