Unter Ubuntu 14.04 (Trusty Tahr) suche ich nach einer Möglichkeit, einen laufenden Container zu stoppen. Die einzige Information, die ich habe, ist der Image-Name, der im Docker-Befehl run verwendet wurde.
Gibt es einen Befehl, um alle übereinstimmenden laufenden Container zu finden, die diesem Bildnamen entsprechen, und sie zu stoppen?
docker
ubuntu
docker-image
Collin Estes
quelle
quelle
ps -a
. Entfernte Container ... nun, sie werden entfernt, sie existieren nicht mehr.Die vorherigen Antworten haben bei mir nicht funktioniert, aber das hat funktioniert:
quelle
Sie können den Container starten und einen Containernamen festlegen:
Das gleiche Bild kann zum Hochfahren mehrerer Container verwendet werden. Dies ist also eine gute Möglichkeit, einen Container zu starten. Dann könnten Sie diesen Containernamen verwenden, um den Container anzuhalten, anzuhängen ...
quelle
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Dieser Code stoppt alle Container mit den Bildschwerpunkten: 6 . Ich konnte keine einfachere Lösung dafür finden.
Oder noch kürzer:
quelle
Zwei Möglichkeiten, den Betrieb eines Containers zu beenden:
Mit dem folgenden Befehl können Sie Container ausführen:
Folgende Links für weitere Informationen:
quelle
$docker
? Oder ist$
von der Shell-Eingabeaufforderung?Für Docker Version 18.09.0 habe ich festgestellt, dass das Format-Flag nicht benötigt wird
quelle
Stoppen Sie den Docker-Container anhand des Bildnamens:
Stoppen Sie den Docker-Container anhand des Bildnamens und des Tags:
Wenn Sie das Bild erstellt haben, können Sie ihm eine Beschriftung hinzufügen und laufende Container nach Beschriftung filtern
Unzuverlässige Methoden
funktioniert nicht immer
Filter nach Containername, nicht nach Bildname
ist problematisch, da der Bildname möglicherweise in anderen Spalten für andere Bilder angezeigt wird
quelle
Ich habe ein
/usr/local/bin/docker.stop
Bild erstellt , das den Bildnamen enthält (vorausgesetzt, Sie haben nur ein Bild).quelle
Ich habe versucht, meine Docker-Befehle in Schluckaufgaben zu verpacken, und festgestellt, dass Sie Folgendes tun können:
Dies funktioniert möglicherweise nicht für Szenarien, in denen Sie mehrere Container mit demselben Namen haben (falls dies möglich ist), aber für meinen Anwendungsfall war es perfekt.
quelle
In meinem Fall hat
--filter ancestor=<image-name>
es nicht funktioniert, daher hat der folgende Befehl den Docker-Container für mich bereinigt:quelle
Listen Sie alle Container mit Informationen und ID auf
quelle
Zusätzlich zu der hervorragenden Antwort von @VonC finden Sie hier eine ZSH-Funktion, die Sie Ihrer .zshrc-Datei hinzufügen können:
dockstop myImageName
Führen Sie dann in Ihrer Befehlszeile einfach alle Container aus, die von einem Image mit dem Namen myImageName gestartet wurden.quelle
Das sollte reichen.
quelle
benutze: Docker Container Stop $ (Docker Container ls -q --filter ancestor = mongo)
quelle
Wenn Sie einen einfachen
AWK
Ansatz bevorzugen möchten , ist hier meine Meinung :$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- druckt die Docker-Containernamen basierend auf dem Eingabebilddocker ps
- Alle Container auflistenawk '{ if($2 == "<your-image-name>") { print $NF}}'
- Die zweite analysierte Spalte vondocker ps
gibt den Bildnamen an. Wenn Sie es mit Ihrem Bildnamen vergleichen, wird ausgeführt,print $NF
wodurch der Containername gedruckt wird.docker rm -f
entfernt die BehälterDas Entfernen aller laufenden Container des Ubuntu-Images kann beispielsweise einfach wie folgt erfolgen:
PS: Denken Sie daran, das Bild-Tag in AWK aufzunehmen, da es ein gleichwertiger Komparator ist.
quelle
Mit dem
ps
Befehl können Sie sich die laufenden Container ansehen:Von dort aus sollten Sie den Namen Ihres Containers zusammen mit der gesuchten Container-ID sehen. Hier finden Sie weitere Informationen zu
docker ps
.quelle