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
Festlegen der Eigenschaften für Mindest- und Maxi...
Das Span-Tag wird häufig beim Erstellen von HTML-...
Ich habe zuvor einen Artikel über die Dateiübertr...
[Problembeschreibung] Unsere Produktionsumgebung ...
Inhaltsverzeichnis 1. Installation 2. Einleitung ...
In diesem Artikelbeispiel wird der spezifische Co...
Das MySQL-Protokoll für langsame Abfragen ist seh...
Wie wähle ich mit CSS rekursiv alle untergeordnet...
Ich habe heute Redis installiert und es sind eini...
Wie in der Abbildung gezeigt: Tabellendaten Wie e...
【Frage】 Wir haben einen HP-Server. Wenn die SSD e...
Harbor ist ein Registry-Server auf Unternehmenseb...
Aus Sicherheitsgründen erlaubt MySql-Server nur d...
1. Scroll Snap ist eine unverzichtbare Fähigkeit ...
Verwenden Sie die FRAME-Eigenschaft, um den Stilt...