Sur Ubuntu 14.04 (Trusty Tahr), je cherche un moyen d'arrêter un conteneur en cours d'exécution et la seule information dont je dispose est le nom de l'image qui a été utilisé dans la commande d'exécution de Docker.
Existe-t-il une commande pour trouver tous les conteneurs en cours d'exécution correspondants qui correspondent à ce nom d'image et les arrêter?
docker
ubuntu
docker-image
Collin Estes
la source
la source
ps -a
. Conteneurs supprimés ... eh bien ils sont supprimés, ils n'existent plus.Les réponses précédentes n'ont pas fonctionné pour moi, mais cela a fonctionné:
la source
Vous pouvez démarrer le conteneur en définissant un nom de conteneur:
La même image peut être utilisée pour faire tourner plusieurs conteneurs, c'est donc un bon moyen de démarrer un conteneur. Ensuite, vous pouvez utiliser ce nom de conteneur pour arrêter, attacher ... le conteneur:
la source
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Ce code arrêtera tous les conteneurs avec l'image centos: 6 . Je n'ai pas pu trouver de solution plus simple à cela.
Ou encore plus court:
la source
Deux façons d'arrêter d'exécuter un conteneur:
Vous pouvez obtenir des conteneurs en cours d'exécution à l'aide de la commande suivante:
Liens suivants pour plus d'informations:
la source
$docker
? Ou vient$
de l'invite du shell?Pour la version 18.09.0 de Docker, j'ai trouvé que l'indicateur de format n'était pas nécessaire
la source
Arrêtez le conteneur Docker par nom d'image:
Arrêtez le conteneur Docker par nom d'image et tag:
Si vous avez créé l'image, vous pouvez y ajouter une étiquette et filtrer les conteneurs en cours d'exécution par étiquette
Méthodes peu fiables
ne fonctionne pas toujours
filtre par nom de conteneur, pas par nom d'image
est problématique car le nom de l'image peut apparaître dans d'autres colonnes pour d'autres images
la source
J'ai fait 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).la source
J'essayais d'encapsuler mes commandes Docker dans des tâches gulp et j'ai réalisé que vous pouviez effectuer les opérations suivantes:
Cela pourrait ne pas fonctionner pour les scénarios où vous avez plusieurs conteneurs avec le même nom (si c'est possible), mais pour mon cas d'utilisation, c'était parfait.
la source
Dans mon cas
--filter ancestor=<image-name>
ne fonctionnait pas, donc la commande suivante a nettoyé le conteneur Docker pour moi:la source
lister tous les conteneurs avec informations et ID
la source
En plus de la superbe réponse @VonC, voici une fonction ZSH que vous pouvez ajouter dans votre fichier .zshrc:
Ensuite, dans votre ligne de commande, faites simplement
dockstop myImageName
et il s'arrêtera et supprimera tous les conteneurs qui ont été démarrés à partir d'une image appelée myImageName.la source
Cela devrait suffire.
la source
utiliser: docker container stop $ (docker container ls -q --filter ancestor = mongo)
la source
Si vous souhaitez préférer une
AWK
approche simple , voici mon avis:$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- imprime les noms des conteneurs du docker en fonction de l'image d'entréedocker ps
- lister tous les conteneursawk '{ if($2 == "<your-image-name>") { print $NF}}'
- La deuxième colonne analysée dedocker ps
donne le nom de l'image. Le comparer avec le nom de votre image exécuteraprint $NF
ce qui imprime le nom du conteneur.docker rm -f
supprime les conteneursPar exemple, la suppression de tous les conteneurs en cours d'exécution de l'image ubuntu peut être effectuée simplement comme suit:
PS: n'oubliez pas d'inclure la balise image dans AWK, car c'est un comparateur égal.
la source
Vous pouvez utiliser la
ps
commande pour jeter un œil aux conteneurs en cours d'exécution:De là, vous devriez voir le nom de votre conteneur ainsi que l'ID de conteneur que vous recherchez. Voici plus d'informations sur
docker ps
.la source