Contenido
Tutorial de docker stop, start, restart y kill: detener y reiniciar contenedores
docker stop, start, restart, kill, pause y unpause controlan el estado de ejecución de los contenedores; consulta el flujo completo en Ciclo de vida de los contenedores.
Sintaxis
docker stop [opciones] contenedor [contenedor...]
docker start [opciones] contenedor [contenedor...]
docker restart [opciones] contenedor [contenedor...]
docker kill [opciones] contenedor [contenedor...]
docker pause contenedor [contenedor...]
docker unpause contenedor [contenedor...]
Opciones
| Comando | Opción | Descripción |
|---|---|---|
docker stop | -s, --signal string | Señal que se envía al contenedor |
docker stop | -t, --timeout int | Segundos que se esperan antes de forzar la finalización del contenedor |
docker start | -a, --attach | Conecta con STDOUT/STDERR del contenedor y reenvía las señales |
docker start | --checkpoint string | Restaura el contenedor desde el checkpoint especificado |
docker start | --checkpoint-dir string | Usa un directorio personalizado para almacenar checkpoints |
docker start | --detach-keys string | Anula la combinación de teclas para salir del modo de conexión |
docker start | -i, --interactive | Conecta con STDIN del contenedor |
docker restart | -s, --signal string | Señal que se envía al contenedor |
docker restart | -t, --timeout int | Segundos que se esperan antes de forzar la finalización del contenedor |
docker kill | -s, --signal string | Señal que se envía al contenedor |
La ayuda de pause y unpause no muestra otras opciones. También puedes invocar stop, start, restart, kill y pause como subcomandos de docker container.
Ejemplos
Tiempo de espera de stop y estado de salida
$ time docker stop web
web
real 0m 0.50s
user 0m 0.00s
sys 0m 0.01s
$ time docker stop sleeper
sleeper
real 0m 10.44s
user 0m 0.01s
sys 0m 0.01s
$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
sleeper Exited (137) 1 second ago
web Exited (0) 12 seconds ago
uses-redis Up 51 seconds
registry Up About a minute
webse detuvo después de 0.50 segundos y su estado esExited (0): nginx recibió SIGTERM y finalizó correctamente.sleeperesperó 10.44 segundos y su estado esExited (137):sleepes el PID 1 del contenedor y no gestionó SIGTERM. Docker esperó los 10 segundos predeterminados y luego envió SIGKILL (137 = 128 + 9). Consulta la explicación sobre PID 1 en Ciclo de vida de los contenedores.- Con
-t, --timeoutdedocker stop --helppuedes configurar cuántos segundos esperar antes de forzar la finalización del contenedor; este ejemplo muestra la diferencia entre esperar el tiempo predeterminado y forzar su finalización. docker ps -amuestra los contenedores detenidos;uses-redisyregistrysiguen en ejecución.
start, restart y kill
$ docker start web
web
$ docker restart -t 2 web
web
$ docker kill sleeper
Error response from daemon: cannot kill container: sleeper: container ebcd31ea947204593383614f0fa2b0b9baba719e4858042e8120b3d544468f20 is not running
$ docker start sleeper && docker kill sleeper
sleeper
sleeper
$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
sleeper Exited (137) Less than a second ago
web Up 2 seconds
uses-redis Up 54 seconds
registry Up About a minute
docker startinicia el contenedor detenidoweb;docker restart -t 2lo reinicia con un tiempo de espera de 2 segundos.docker kill sleeperfalla porque el contenedor está detenido; el error indica que no se está ejecutando. Si primero lo inicias y luego ejecutas kill, ambos comandos se completan correctamente.- Después de kill,
sleeperaparece comoExited (137)ywebcomoUp.
pause y unpause
$ docker pause web
web
$ docker ps --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
web Up 2 seconds (Paused)
uses-redis Up 55 seconds
registry Up About a minute
$ docker exec web nginx -v
Error response from daemon: Container web is paused, unpause the container before exec
$ docker unpause web
web
docker pausepausa todos los procesos del contenedor y la columna de estado muestra(Paused).- Durante la pausa,
docker execfalla con un mensaje que indica que primero debes ejecutar unpause;docker unpausereanuda el contenedor.
Enviar una señal para recargar nginx
$ docker kill -s HUP web
web
$ docker logs --tail 3 web
2026/10/25 15:30:32 [notice] 1#1: signal 17 (SIGCHLD) received from 22
2026/10/25 15:30:32 [notice] 1#1: worker process 22 exited with code 0
2026/10/25 15:30:32 [notice] 1#1: signal 29 (SIGIO) received
$ docker kill -s HUP web2
web2
$ docker logs web2 2>&1 | grep -E 'SIGHUP|reconfiguring'
2026/10/25 15:31:00 [notice] 1#1: signal 1 (SIGHUP) received, reconfiguring
2026/10/25 15:31:00 [notice] 1#1: reconfiguring
docker kill -s HUPenvía la señal especificada al contenedor; aquí, el registro deweb2muestra claramente que recibióSIGHUPy está recargando la configuración.docker logs --tail 3limita la salida a las tres líneas más recientes; el otro ejemplo combina stderr con stdout y luego usagreppara filtrar el registro.
El nombre del contenedor no existe
$ docker stop nosuch
Error response from daemon: No such container: nosuch
Si el nombre del contenedor especificado no existe, Docker responde No such container.
Secciones relacionadas
- Ciclo de vida de los contenedores
- Comando docker ps: consultar el estado de los contenedores
- Comando docker exec: ejecutar un comando dentro de un contenedor en ejecución
- Comando docker logs: consultar los registros del contenedor
Ejercicios
Ejercicio: el contenedor sleeper está detenido. Inícialo, fuérzalo a terminar inmediatamente y, por último, muestra los nombres y estados de todos los contenedores.
Respuesta
docker start sleeper && docker kill sleeper
docker ps -a --format 'table {{.Names}}\t{{.Status}}'
Preguntas frecuentes
¿Por qué docker stop sleeper tarda unos 10 segundos?
En esta ejecución, docker stop sleeper tardó 10.44 segundos y el estado posterior fue Exited (137); docker stop --help explica que -t, --timeout indica cuántos segundos esperar antes de forzar la finalización del contenedor.
¿Se puede usar docker kill con un contenedor detenido?
No. Al ejecutar docker kill sobre sleeper, que estaba detenido, Docker indicó que el contenedor no se estaba ejecutando; primero debes iniciarlo con docker start sleeper para poder usar kill.
¿Se puede usar docker exec después de pausar un contenedor?
No. En el ejemplo, docker exec web nginx -v indicó que el contenedor estaba pausado; primero debes ejecutar docker unpause web.
¿Cómo se puede recargar la configuración de nginx sin detener el contenedor?
Envía HUP al contenedor: docker kill -s HUP web2. El registro mostrará SIGHUP received, reconfiguring.
Actualizado 26 de octubre de 2026