Guías/Cómo detener contenedores de Docker
Cómo detener contenedores de Docker en un Mac, uno o todos
Respuesta rápida
Para detener un contenedor de Docker, ejecuta docker stop seguido de su nombre o su ID; docker ps los muestra. Para detener todos los contenedores en marcha, ejecuta docker stop $(docker ps -q). En un proyecto de Compose, docker compose stop detiene sus contenedores y docker compose down además los elimina. docker stop pide al contenedor que se cierre y lo fuerza al cabo de 10 segundos. Un contenedor que vuelve tiene una política de reinicio; desactívala con docker update --restart=no. Vitals, un monitor del sistema para Mac, detiene contenedores desde la barra de menús: su lista de contenedores muestra la memoria de cada uno, y un clic lo detiene después de preguntarte.
Cómo detener contenedores de Docker desde Terminal
- 01 Ejecuta
docker pspara ver los contenedores en marcha, con sus nombres e ID. - 02 Detén uno con
docker stopy su nombre, por ejemplodocker stop web-1. Puedes nombrar varios en un solo comando. - 03 Detén todos los contenedores en marcha con
docker stop $(docker ps -q).docker ps -qmuestra solo los ID, y docker stop los recibe todos. - 04 En un proyecto de Compose, ejecuta
docker compose stopen su carpeta para detener sus servicios, odocker compose downpara detenerlos y eliminar los contenedores y la red del proyecto. Los volúmenes se quedan, salvo que añadas-v. - 05 Vuelve a ejecutar
docker ps. Un contenedor que sigue en la lista aún se está cerrando, y uno que vuelve a aparecer al momento tiene una política de reinicio.
Los mismos comandos funcionan con OrbStack, Colima y Rancher Desktop cuando el comando docker apunta a ellos. Podman tiene podman stop, y podman stop -a los detiene todos.
Detener un contenedor termina sus procesos y conserva todo lo demás, sus archivos, sus ajustes y sus volúmenes, listo para docker start. Por eso es la forma segura de recuperar memoria y CPU de un contenedor que no usas. La tabla de abajo lo compara con los comandos que se suelen usar a su lado.
docker stop, kill, pause, rm y compose down
| Comando | Qué hace | Cuándo usarlo |
|---|---|---|
| docker stop | Envía SIGTERM, y SIGKILL al cabo de 10 segundos | Casi siempre: la app puede terminar de escribir y cerrar sus conexiones |
| docker kill | Envía SIGKILL al instante | Un contenedor no hace caso de docker stop |
| docker pause | Congela los procesos, que conservan su memoria | Quieres recuperar la CPU durante un rato, no la memoria |
| docker rm | Elimina un contenedor detenido, o uno en marcha con -f | Ya no lo necesitas; los volúmenes con nombre se quedan |
| docker compose stop | Detiene los contenedores de un proyecto y los conserva | Vas a volver a iniciar el mismo proyecto pronto |
| docker compose down | Detiene y elimina los contenedores y la red | Quieres empezar de cero la próxima vez; añade -v para eliminar también los volúmenes |
Por qué un contenedor detenido vuelve a arrancar
Docker vuelve a iniciar los contenedores que tienen una política de reinicio. Con always, un contenedor que detuviste vuelve la próxima vez que se inicia Docker Desktop, así que los contenedores que detuviste ayer vuelven a estar en marcha tras reiniciar. Con unless-stopped, un contenedor que detuviste sigue detenido. Los archivos de Compose suelen poner restart: always en las bases de datos y las cachés.
Para ver la política de un contenedor, ejecuta docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' seguido de su nombre. Para desactivarla, ejecuta docker update --restart=no y el nombre, o cambia restart: en el archivo de Compose.
Cuando docker stop tarda 10 segundos
docker stop espera a que el proceso principal del contenedor termine tras SIGTERM. Un proceso que no hace caso de la señal, a menudo un script de shell que no la transmite, retrasa la parada los 10 segundos completos antes de que Docker lo mate. docker stop -t 2 acorta la espera. Si corriges la imagen, se detiene al instante: inicia la app con exec en el script de entrypoint, o pon init: true en el servicio en Compose.
Detener contenedores y recuperar la memoria
En un Mac, los contenedores se ejecutan dentro de una sola máquina virtual Linux. Al detenerlos se libera su memoria dentro de ella, pero la máquina virtual puede seguir reteniéndola, así que Monitor de Actividad puede seguir mostrando un Virtual Machine Service for Docker grande. Resource Saver, o cerrar Docker Desktop, se la devuelve a macOS; consulta Docker usa demasiada memoria para ver los ajustes.
Detener contenedores sin Terminal
La vista Containers de Docker Desktop tiene un botón Stop en cada contenedor y en cada proyecto de Compose. Está en la ventana de Docker Desktop, así que tienes que abrir la app para usarlo. Las apps de la barra de menús como Captain muestran los contenedores bajo un icono de la barra de menús, con un botón para iniciar y detener cada uno. Vitals hace lo mismo desde su barra de menús y añade lo que ninguna muestra: cuánta memoria y CPU usa cada contenedor, para que sepas cuál detener.
Lo que añade Vitals
Vitals detiene contenedores desde la barra de menús del Mac, con su memoria a la vista.
- La lista Contenedores en el menú desplegable: cada contenedor en marcha con su proyecto de Compose, su imagen y una barra con su memoria
- Coloca el puntero sobre uno y haz clic en la × que aparece. La fila te pregunta y luego lo detiene como lo hace
docker stop, con 10 segundos para cerrarse - En la pestaña Contenedores de la ventana, selecciona varios y haz clic en ellos con la tecla Control pulsada para detenerlos juntos, o haz clic con Control en un proyecto de Compose y elige “Detener todos”
- Memoria, CPU, red, disco y puertos publicados de cada contenedor, con Docker Desktop, OrbStack, Colima, Rancher Desktop y Podman
Conviene saberlo
- Vitals pregunta antes de detener nada, y nunca inicia, elimina ni cambia un contenedor.
- El motor puede volver a iniciar un contenedor con una política de reinicio. La ventana lo avisa cuando te pregunta.
- Si el motor se niega o no responde, la fila indica que el contenedor sigue en marcha.
- La lista Contenedores aparece mientras hay un motor en marcha.
Preguntas frecuentes
¿Cómo detengo todos los contenedores de Docker a la vez?
Ejecuta docker stop $(docker ps -q). Obtiene los ID de todos los contenedores en marcha y detiene cada uno. En Vitals, selecciónalos en la pestaña Contenedores y haz clic con Control para detenerlos juntos.
¿Qué diferencia hay entre docker stop y docker kill?
docker stop envía SIGTERM y espera hasta 10 segundos antes de forzar el contenedor con SIGKILL. docker kill envía SIGKILL al instante, así que la app no tiene ocasión de terminar de escribir ni de cerrar sus conexiones.
¿Qué diferencia hay entre docker compose stop y down?
docker compose stop detiene los contenedores y los conserva, listos para docker compose start. docker compose down los detiene y elimina los contenedores y la red del proyecto; los volúmenes se quedan, salvo que añadas -v.
¿Por qué mi contenedor de Docker vuelve a arrancar después de detenerlo?
Tiene la política de reinicio always, así que Docker lo vuelve a iniciar cuando se inicia Docker Desktop. Ejecuta docker update --restart=no con su nombre, o cambia restart: en el archivo de Compose.
¿Detener un contenedor borra sus datos?
No. Un contenedor detenido conserva sus archivos y sus volúmenes, y docker start lo vuelve a ejecutar. docker rm elimina el contenedor; los volúmenes con nombre se quedan hasta que los elimines.
¿Puedo detener contenedores de Docker desde la barra de menús del Mac?
Sí, con Vitals. Su menú desplegable de la barra de menús muestra los contenedores en marcha con su memoria, y un clic detiene un contenedor después de preguntarte. Funciona con Docker Desktop, OrbStack, Colima, Rancher Desktop y Podman.
En el glosario
Más guías
- Por qué mi Mac va tan lento
- Qué está agotando la batería de mi Mac
- Qué app está usando mi CPU o mi memoria
- Por qué mi Mac no entra en reposo
- Chrome usa demasiada memoria
- Por qué los ventiladores de mi Mac hacen tanto ruido
- Cómo controlar la velocidad del ventilador en un Mac
- Cómo liberar RAM en un Mac
- Docker usa demasiada memoria
- Mezclador de volumen para Mac
- Alternativas a Monitor de Actividad
- Alternativas a iStat Menus
- Alternativas a Stats
- Administrador de tareas para Mac
- Los mejores monitores del sistema para Mac
- Los mejores monitores para la barra de menús del Mac
- Los mejores mezcladores de volumen para Mac