Sous Ubuntu 14.04 (Trusty Tahr), je cherche un moyen d’arrêter un conteneur en cours d’exécution. La seule information dont je dispose est le nom de l’image utilisée dans la commande d'exécution de Docker.
Existe-t-il une commande permettant de rechercher tous les conteneurs en cours d'exécution correspondants correspondant à ce nom d'image et de les arrêter?
Après numéro 8959 , un bon début serait:
docker ps -a -q --filter="name=<containerName>"
Puisque name
fait référence au conteneur et non au nom de l'image, vous devez utiliser le plus récent ancêtre du filtre Docker 1.9 , mentionné dans koekiebox 's réponse .
docker ps -a -q --filter ancestor=<image-name>
Comme indiqué ci-dessous par kiril , pour supprimer ces conteneurs:
stop
renvoie également les conteneurs.
Donc, chaîner stop
et rm
fera l'affaire:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
Les réponses précédentes ne fonctionnaient pas pour moi, mais cela ne fonctionnait pas:
docker stop $(docker ps -q --filter ancestor=<image-name> )
Vous pouvez démarrer le conteneur en définissant un nom de conteneur:
docker run -d --name <container-name> <image-name>
La même image peut être utilisée pour faire tourner plusieurs conteneurs. C’est donc un bon moyen de démarrer un conteneur. Vous pouvez ensuite utiliser ce nom de conteneur pour arrêter, attacher ... le conteneur:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
Ce code va arrêter tous les conteneurs avec l'image centos: 6. Je ne pouvais pas trouver une solution plus facile pour cela.
docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
Ou même plus court:
docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
Deux façons d'arrêter de faire fonctionner un conteneur:
1. $docker stop container_ID
2. $docker kill container_ID
Vous pouvez obtenir des conteneurs en cours d'exécution à l'aide de la commande suivante:
$docker ps
Liens suivants pour plus d'informations:
liste tous les conteneurs avec info et ID
docker ps
docker stop CONTAINER ID
Arrêtez le conteneur Docker par nom d'image:
imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
Arrêtez le conteneur Docker par nom d'image et étiquette:
imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')
Si vous avez créé l'image, vous pouvez y ajouter label et filtrer les conteneurs en cours d'exécution par étiquette.
docker ps -q --filter "label=image=$image"
Méthodes non fiables
docker ps -a -q --filter ancestor=<image-name>
docker ps -a -q --filter="name=<containerName>"
filtres par nom de conteneur, pas de nom d'image
docker ps | grep <image-name> | awk '{print $1}'
est problématique car le nom de l'image peut apparaître dans d'autres colonnes pour d'autres images
Pour Docker version 18.09.0, j'ai constaté que l'indicateur de format ne serait pas nécessaire.
docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))
Dans mon cas, --filter ancestor=<image-name>
ne fonctionnait pas. La commande suivante a donc nettoyé le conteneur Docker pour moi:
docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
Cela devrait suffire.
J'ai créé un /usr/local/bin/docker.stop
qui prend le nom de l'image (en supposant que vous n'en avez qu'un en cours d'exécution).
docker stop $(docker ps -q -f "name=$1")
J'essayais d'encapsuler mes commandes Docker dans des tâches gulp et me suis rendu compte que vous pouvez effectuer les opérations suivantes:
docker stop container-name
docker rm container-name
Cela pourrait ne pas fonctionner dans les cas où plusieurs conteneurs portent le même nom (si cela est possible), mais dans mon cas d'utilisation, c'était parfait.