Verwenden Sie Shell-Skripte, um Docker-Dienste stapelweise zu starten und zu stoppen

Verwenden Sie Shell-Skripte, um Docker-Dienste stapelweise zu starten und zu stoppen

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 Docker

Das 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 Docker

Das 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-Aufrufskript

Das 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:
  • So kommentieren und entfernen Sie Kommentare stapelweise in der Shell
  • Beispiel für die Verwendung eines Shell-Skripts zum Zählen der Dateigröße und Erstellen von Benutzern in Stapeln
  • Detaillierte Beispiele für das Stapelkopieren von Shellskripten und die Befehlsausführung
  • Shell-Skript implementiert ssh-copy-id, um öffentliche Schlüssel automatisch stapelweise an Remote-Hosts zu senden
  • So löschen Sie ES-Indizes stapelweise mithilfe eines Shell-Skripts
  • Einfache Implementierungsmethode für das Shell-Batch-Curl-Schnittstellenskript
  • Detaillierte Erläuterung der Shell-Befehlszeilen-Stapelverarbeitung von Bilddateinamen
  • So verwenden Sie die Shell, um Batchvorgänge auf mehreren Servern auszuführen

<<:  Konzept und Anwendungsbeispiele für die MySQL-Indexkardinalität

>>:  Vue implementiert Studentenverwaltungsfunktion

Artikel empfehlen

So verwenden Sie die asynchrone Anforderungs-API von Axios in Vue

Inhaltsverzeichnis Einrichten einer einfachen HTT...

Detailliertes Tutorial zur Integration von Apache Tomcat mit dem IDEA-Editor

1. Laden Sie das komprimierte Tomcat-Paket von de...

mysql 8.0.18 mgr-Installation und seine Umschaltfunktion

1. Systeminstallationspaket yum -y install make g...

Detaillierte Erläuterung der MySQL-Mehrtabellenabfrage

Die Zeit vergeht immer überraschend schnell, ohne...

Wachstumserfahrung eines Webdesigners

<br />Vorab muss ich sagen, dass ich ein abs...

jQuery realisiert die Shuttle-Box-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript zum Hinzufügen und Löschen von Nachrichten im Message Board

Dieser Artikel zeigt ein kleines Beispiel für das...

MySQL Serie 8 MySQL Server-Variablen

Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...

Natives Javascript+CSS, um den Karusselleffekt zu erzielen

Dieser Artikel verwendet Javascript + CSS, um den...

Kapselungsmethode der Vue-Breadcrumbs-Komponente

Vue kapselt die Breadcrumb-Komponente zu Ihrer In...

Detaillierte Darstellung des MySQL 5.7.33-Installationsprozesses

Inhaltsverzeichnis Download des Installationspake...

Implementierungscode für unendliches Scrollen mit n Containerelementen

Szenario So rendern Sie Listen mit bis zu 10.000 ...