hub - Detener los contenedores Docker por nombre de imagen-Ubuntu
docker hub (13)
Después del número 8959 , un buen comienzo sería:
docker ps -a -q --filter="name=<containerName>"
Como el
name
refiere al
contenedor
y no al nombre de la imagen, deberá usar el
ancestro del filtro Docker 1.9
más reciente, mencionado en la
answer
koekiebox
.
docker ps -a -q --filter ancestor=<image-name>
Como se comenta a continuación por kiril , para eliminar esos contenedores:
stop
devuelve los contenedores.
Así que encadenar
stop
y
rm
hará el trabajo:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
En Ubuntu 14.04 (Trusty Tahr), estoy buscando una manera de detener un contenedor en ejecución y la única información que tengo es el nombre de la imagen que se utilizó en el comando de ejecución de Docker.
¿Existe un comando para encontrar todos los contenedores en ejecución coincidentes que coincidan con el nombre de esa imagen y detenerlos?
Dos formas de dejar de ejecutar un contenedor:
1. $docker stop container_ID
2. $docker kill container_ID
Puede ejecutar contenedores utilizando el siguiente comando:
$docker ps
Siguiendo los enlaces para más información:
En mi caso,
--filter ancestor=<image-name>
no funcionaba, por lo que el siguiente comando me limpió el contenedor Docker:
docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
Estaba tratando de ajustar mis comandos Docker en tareas de trago y me di cuenta de que puede hacer lo siguiente:
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
Esto podría no funcionar para escenarios en los que tiene varios contenedores con el mismo nombre (si es posible), pero para mi caso de uso fue perfecto.
Este código detendrá todos los contenedores con los centos de imagen : 6 . No pude encontrar una solución más fácil para eso.
docker ps | grep centos:6 | awk ''{print $1}'' | xargs docker stop
O incluso más corto:
docker stop $(docker ps -a | grep centos:6 | awk ''{print $1}'')
Hice un
/usr/local/bin/docker.stop
que toma el nombre de la imagen (se supone que solo tiene uno en ejecución).
docker stop $(docker ps -q -f "name=$1")
Las respuestas anteriores no me funcionaron, pero esto sí:
docker stop $(docker ps -q --filter ancestor=<image-name> )
Para la versión 18.09.0 de Docker, descubrí que no se necesitará la marca de formato
docker rm $(docker stop $(docker ps -a -q -f ancestor=<image-name>))
Puede iniciar el contenedor configurando un nombre de contenedor:
docker run -d --name <container-name> <image-name>
La misma imagen podría usarse para girar varios contenedores, por lo que esta es una buena manera de iniciar un contenedor. Entonces podría usar este nombre de contenedor para detener, adjuntar ... el contenedor:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
Puede usar el comando
ps
para ver los contenedores en ejecución:
docker ps -a
A partir de ahí, debe ver el nombre de su contenedor junto con la ID del contenedor que está buscando.
Aquí hay más información sobre
docker ps
.
enumerar todos los contenedores con información e identificación
docker ps | grep <image-name> | awk ''{print $1}''
Detener el contenedor acoplable por nombre de imagen:
docker ps
docker stop CONTAINER ID
Detenga el contenedor acoplable por nombre de imagen y etiqueta:
imagename=''mydockerimage''
docker stop $(docker ps | awk ''{split($2,image,":"); print $1, image[1]}'' | awk -v image=$imagename ''$2 == image {print $1}'')
Si creó la imagen, puede agregarle una label y filtrar los contenedores en ejecución por etiqueta
imagename=''mydockerimage:latest''
docker stop $(docker ps | awk -v image=$imagename ''$2 == image {print $1}'')
Métodos poco confiables
docker ps -q --filter "label=image=$image"
docker ps -a -q --filter ancestor=<image-name>
filtra por nombre de contenedor, no por nombre de imagen
docker ps -a -q --filter="name=<containerName>"
es problemático ya que el nombre de la imagen puede aparecer en otras columnas para otras imágenes
docker stop container-name
docker rm container-name
Esto debería ser suficiente.