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 ese nombre de imagen y detenerlos?
docker
ubuntu
docker-image
Collin Estes
fuente
fuente
ps -a
. Contenedores eliminados ... bueno, se eliminan, ya no existen.Las respuestas anteriores no me funcionaron, pero esto sí:
fuente
Puede iniciar el contenedor configurando un nombre de contenedor:
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:
fuente
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
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.
O incluso más corto:
fuente
Dos formas de dejar de ejecutar un contenedor:
Puede ejecutar contenedores con el siguiente comando:
Siguientes enlaces para más información:
fuente
$docker
? ¿O es$
desde el indicador de comandos de shell?Para Docker versión 18.09.0, descubrí que no se necesitará la marca de formato
fuente
Detener el contenedor acoplable por nombre de imagen:
Detenga el contenedor acoplable por nombre de imagen y etiqueta:
Si creó la imagen, puede agregarle una etiqueta y filtrar los contenedores en ejecución por etiqueta
Métodos poco confiables
no siempre funciona
filtra por nombre del contenedor, no por nombre de imagen
es problemático ya que el nombre de la imagen puede aparecer en otras columnas para otras imágenes
fuente
Hice una
/usr/local/bin/docker.stop
que toma el nombre de la imagen (se supone que solo tiene una en ejecución).fuente
Intenté ajustar mis comandos de Docker en tareas de trago y me di cuenta de que puede hacer lo siguiente:
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.
fuente
En mi caso
--filter ancestor=<image-name>
no funcionaba, por lo que el siguiente comando limpió el contenedor Docker para mí:fuente
enumerar todos los contenedores con información e identificación
fuente
Agregando además de la excelente respuesta de @VonC, aquí hay una función ZSH que puede agregar a su archivo .zshrc:
Luego, en su línea de comando, simplemente haga
dockstop myImageName
y se detendrá y eliminará todos los contenedores que se iniciaron desde una imagen llamada myImageName.fuente
Esto debería ser suficiente.
fuente
use: contenedor Docker stop $ (contenedor Docker ls -q --filter ancestor = mongo)
fuente
Si desea preferir un
AWK
enfoque simple , aquí está mi opinión:$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- imprime los nombres del contenedor acoplable en función de la imagen de entradadocker ps
- enumerar todos los contenedoresawk '{ if($2 == "<your-image-name>") { print $NF}}'
- La segunda columna analizada dedocker ps
da el nombre de la imagen. Comparándolo con el nombre de su imagen se ejecutará loprint $NF
que imprime el nombre del contenedor.docker rm -f
elimina los contenedoresPor ejemplo, la eliminación de todos los contenedores en ejecución de la imagen de ubuntu se puede hacer simplemente como:
PD: Recuerde incluir la etiqueta de imagen en AWK, ya que es un comparador igual.
fuente
Puede usar el
ps
comando para ver los contenedores en ejecución:A partir de ahí, debería ver el nombre de su contenedor junto con la ID del contenedor que está buscando. Aquí hay más información sobre
docker ps
.fuente