Este tutorial de Docker analiza los métodos para detener un solo contenedor de Docker, varios contenedores de Docker o todos los contenedores de Docker en ejecución a la vez. También aprenderá a detener con gracia un contenedor docker.
Para detener un contenedor docker, todo lo que tiene que hacer es usar el ID del contenedor o el nombre del contenedor de la siguiente manera:
docker stop container_ID_or_name
También puede usar el comando docker container stop container_id_or_name, pero esa es una palabra adicional en el comando y no proporciona ningún beneficio adicional, así que quédese con docker stop.
Pero hay más acerca de detener un contenedor acoplable que debe saber, especialmente si es un principiante de Docker.
Ejemplos prácticos para detener docker container
Discutiré varios aspectos relacionados con la detención de un contenedor docker en este tutorial:
- Detener un contenedor docker
- Detenga varios contenedores docker a la vez
- Detenga todos los contenedores docker con una determinada imagen
- Detener todos los contenedores docker en ejecución a la vez
- Detener correctamente un contenedor docker
Antes de ver eso, debe saber cómo obtener el nombre o ID del contenedor.
Puede enumerar todos los contenedores docker en ejecución con docker ps
dominio. Sin ninguna opción, el comando docker ps solo muestra los contenedores en ejecución.
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2
94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
La salida también le brinda el nombre del contenedor y la ID del contenedor. Puede usar cualquiera de estos dos para detener un contenedor.
Ahora vamos a detener los contenedores.
1. Detener un contenedor docker
Para detener un contenedor específico, use su ID o nombre con el comando de parada de la ventana acoplable:
docker stop container_name_or_ID
El resultado debería haber sido más descriptivo, pero solo muestra el nombre o ID del contenedor, cualquiera que haya proporcionado:
[email protected]:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7
Puede usar el comando docker stop en un contenedor ya detenido. No arrojará ningún error ni una salida diferente.
Puede verificar si el contenedor se detuvo con el comando docker ps -a. La opción -a muestra todos los contenedores, ya sea que estén en ejecución o detenidos.
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2
94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
Si el estado es Salido, significa que el contenedor ya no se está ejecutando.
2. Detener múltiples contenedores docker
También puede detener varios contenedores docker a la vez. Solo tiene que proporcionar los nombres e ID de los contenedores.
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
Como antes, la salida simplemente mostrará el nombre o ID de los contenedores:
[email protected]:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3
3. Detener todos los contenedores asociados con una imagen
Hasta ahora, lo que vio detener contenedores mencionando explícitamente su nombre o ID.
¿Qué sucede si desea detener todos los contenedores en ejecución de una determinada imagen de ventana acoplable? Imagine un escenario en el que desea eliminar una imagen acoplable pero tendrá que detener todos los contenedores en ejecución asociados.
Puede proporcionar los nombres o ID de los contenedores uno por uno, pero eso lleva mucho tiempo. Lo que puede hacer es filtrar todos los contenedores en ejecución en función de su imagen base.
Simplemente reemplace IMAGE_NAME por el nombre de la imagen de su ventana acoplable y debería poder detener todos los contenedores en ejecución asociados con esa imagen.
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
La opción -q muestra solo el ID del contenedor. Gracias al maravilloso comando xargs, estos ID de contenedores se canalizan a la parada de la ventana acoplable como argumento.
4. Detener todos los contenedores docker en ejecución
Es posible que se enfrente a una situación en la que deba detener todos los contenedores en funcionamiento. Por ejemplo, si desea eliminar todos los contenedores en Docker, debe detenerlos de antemano.
Para hacer eso, puedes usar algo similar a lo que viste en la sección anterior. Simplemente elimine la parte de la imagen.
docker ps -q | xargs docker stop
5. Detener un contenedor con gracia
Para ser honesto, la ventana acoplable detiene un contenedor con gracia de forma predeterminada. Cuando usa el comando docker stop, le da al contenedor 10 segundos antes de matarlo a la fuerza.
No significa que siempre se necesiten 10 segundos para detener un contenedor. Es solo que si el contenedor está ejecutando algunos procesos, tiene 10 segundos para detener el proceso y salir.
El comando de parada de Docker primero envía el comando SIGTERM. Si el contenedor se detiene en este período, envía el comando SIGKILL. Un proceso puede ignorar el SIGTERM pero SIGKILL matará el proceso inmediatamente.
Espero que sepas la diferencia entre SIGTERM y SIGKILL.
¿Qué es SIGTERM? ¿Cuál es la diferencia entre SIGKILL y SIGTERM? Tanto SIGTERM como SIGKILL se utilizan para eliminar un proceso en Linux. Pero debería preferir usar SIGTERM. ¡Este es el por qué! Manual de LinuxAbhishek PrakashPuede cambiar este período de gracia de 10 segundos con la opción -t. Suponga que desea esperar 30 segundos antes de detener el contenedor:
docker stop -t 30 container_name_or_id
Al final…
Creo que toda esta información cubre muy bien el tema. Sabes muchas cosas sobre cómo detener un contenedor docker.
Estén atentos para obtener más consejos y tutoriales de Docker. Si tiene preguntas o sugerencias, hágamelo saber en la sección de comentarios.