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
Heute habe ich zufällig einem Freund beim Umzug s...
Gängige Methoden zur Begrenzung der Eingabe 1. Um ...
docker-compose-monitor.yml Version: '2' N...
Wie lädt man das JAR-Paket in ein privates Lager ...
Dieser Artikel beschreibt anhand eines Beispiels,...
Die Downloadadresse von FlashFXP lautet: https://...
Wenn Sie beim Konfigurieren von proxy_pass in ngi...
Beim Schreiben von Projekten stoßen wir häufig au...
Zusammengeklappte Kopfzeilen sind eine großartige...
In diesem Artikel wird der spezifische JavaScript...
In diesem Artikel wird der spezifische Code der m...
Inhaltsverzeichnis brauchen Problemumgehung 1. To...
Inhaltsverzeichnis Komponente zur Leistungsoptimi...
mysql kopiert die Dateien im Datenverzeichnis, um...
Nach der erfolgreichen Installation von CentOS 7 ...