it-swarm.com.de

Stoppen von Docker-Containern nach Image-Name - Ubuntu

Unter Ubuntu 14.04 (Trusty Tahr) suche ich nach einer Möglichkeit, einen laufenden Container zu stoppen, und 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 Image-Namen entsprechen, und sie zu stoppen?

126
Collin Estes

Nach Ausgabe 8959 wäre ein guter Start:

docker ps -a -q --filter="name=<containerName>"

Da name auf den Container und nicht auf den Bildnamen verweist, müssen Sie den neueren Filter Docker 1.9) verwenden Ahne , erwähnt in Koekiebox 's Antwort .

docker ps -a -q  --filter ancestor=<image-name>

Wie unten von kiril kommentiert, um diese Container zu entfernen:

stop gibt auch die Container zurück.

Das Verketten von stop und rm erledigt also die Aufgabe:

docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
166
VonC

Die vorherigen Antworten haben bei mir nicht funktioniert, aber das hat funktioniert:

docker stop $(docker ps -q --filter ancestor=<image-name> )
54
Koekiebox

Sie können den Container starten, indem Sie einen Containernamen festlegen:

docker run -d --name <container-name> <image-name>

Das gleiche Image kann verwendet werden, um mehrere Container hochzufahren. Dies ist also ein guter Weg, um einen Container zu starten. Dann könnten Sie diesen Containernamen verwenden, um den Container anzuhalten, anzuhängen ...:

docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
36
Javier Sánchez

Dieser Code stoppt alle Container mit dem Bild Centos: 6. Ich konnte keine einfachere Lösung dafür finden.

docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop

Oder noch kürzer:

docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
13
ArgonQQ

Es gibt zwei Möglichkeiten, die Ausführung eines Containers zu beenden:

1. $docker stop container_ID

2. $docker kill container_ID

Sie können Container mit dem folgenden Befehl ausführen:

$docker ps

Unter folgenden Links erhalten Sie weitere Informationen:

10

liste alle container mit info und id auf

docker ps

docker stop CONTAINER ID
3
Muhammed Moussa

Stoppen Sie den Docker-Container anhand des Bildnamens:

imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')

Stoppen Sie den Docker-Container nach Bildname und Tag:

imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')

Wenn Sie das Image erstellt haben, können Sie ein Label hinzufügen und laufende Container nach Label filtern

docker ps -q --filter "label=image=$image"

Unzuverlässige Methoden

docker ps -a -q  --filter ancestor=<image-name>

funktioniert nicht immer

docker ps -a -q --filter="name=<containerName>"

filtert nach Containernamen, nicht nach Bildnamen

docker ps | grep <image-name> | awk '{print $1}'

ist problematisch, da der Bildname in anderen Spalten für andere Bilder angezeigt werden kann

2
Jay

Für Docker Version 18.09.0 habe ich festgestellt, dass das Format-Flag nicht benötigt wird

docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))
1
ankitj

In meinem Fall --filter ancestor=<image-name> hat nicht funktioniert, daher hat der folgende Befehl den Docker-Container für mich bereinigt:

docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
1
Alexey
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")

Das sollte reichen.

Ich machte einen /usr/local/bin/docker.stop, das den Bildnamen aufnimmt (setzt voraus, dass nur ein Bild ausgeführt wird).

docker stop $(docker ps -q -f "name=$1")
1
AmanicA

Ich habe versucht, meine Docker-Befehle in gulp-Tasks zu packen, und festgestellt, dass Sie Folgendes tun können:

docker stop container-name
docker rm container-name

Dies funktioniert möglicherweise nicht in Szenarien, in denen Sie mehrere Container mit demselben Namen haben (sofern dies möglich ist), aber für meinen Anwendungsfall war es perfekt.

0
Matt Gaunt