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
<br />Verwandte Artikel: 9 praktische Vorsch...
Die Warnhinweise in diesem Artikel haben nichts m...
DML-Operationen beziehen sich auf Operationen an ...
Dieser Artikel entstand aus meinen Beschwerden üb...
1. Befehlsmethode Führen Sie den Nginx-Dienst im ...
MySQL-Zeichenfolgenverkettung, -Abfangen, -Ersetz...
In vertikaler Richtung können Sie die Zeilenausri...
Erstellen Sie eine Simulationsumgebung: Betriebss...
Jedes Mal, wenn ich das System installiert habe, ...
Timer-Effekte: <div> <font id='timeC...
Die Paginierungskomponente ist eine häufige Kompo...
Die Javascript-Funktion zum Konvertieren von <t...
Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...
1. Einleitung Wenn Sie früher mit dem Schreiben v...
Inhaltsverzeichnis Zusammenfassen Manchmal müssen...