Detener el contenedor usando la señal y tiempo de espera predeterminados
En este paso, aprenderás cómo detener un contenedor Docker en ejecución utilizando la señal y tiempo de espera predeterminados. Cuando detienes un contenedor, Docker envía una señal al proceso principal que se ejecuta dentro del contenedor. Por defecto, Docker envía la señal SIGTERM
, que indica al proceso que se cierre de manera ordenada. Si el proceso no termina dentro del período de tiempo de espera predeterminado (normalmente 10 segundos), Docker envía una señal SIGKILL
para forzar la terminación del proceso.
Primero, ejecutemos un contenedor que permanecerá activo. Usaremos la imagen ubuntu
y ejecutaremos un comando simple que mantendrá el contenedor en funcionamiento.
docker pull ubuntu
Deberías ver una salida que indica que la imagen ubuntu
se está descargando.
Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Ahora, ejecuta el contenedor ubuntu
en modo desatendido (-d
) para que se ejecute en segundo plano, y ejecuta un comando que lo mantendrá funcionando indefinidamente (por ejemplo, tail -f /dev/null
).
docker run -d ubuntu tail -f /dev/null
Este comando mostrará el ID del contenedor.
<container_id>
Puedes verificar que el contenedor está en ejecución usando el comando docker ps
:
docker ps
Deberías ver el contenedor ubuntu
listado con un estado de Up
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Up About a minute ago <container_name>
Ahora, detengamos este contenedor en ejecución usando el comando docker stop
. Puedes usar tanto el ID del contenedor como su nombre. Reemplaza <container_id>
con el ID real de tu contenedor en ejecución.
docker stop <container_id>
El comando mostrará el ID del contenedor que fue detenido.
<container_id>
Después de ejecutar el comando docker stop
, el contenedor recibirá la señal SIGTERM
. Docker esperará el tiempo de espera predeterminado (10 segundos) para que el contenedor se detenga ordenadamente. Si no se detiene en ese tiempo, enviará SIGKILL
.
Puedes verificar que el contenedor se ha detenido ejecutando docker ps
nuevamente.
docker ps
El contenedor ubuntu
ya no debería aparecer en la salida de docker ps
(que solo muestra contenedores en ejecución). Para ver todos los contenedores, incluidos los detenidos, usa docker ps -a
.
docker ps -a
Deberías ver el contenedor ubuntu
listado con un estado de Exited
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Exited (0) About a minute ago <container_name>
Esto confirma que el contenedor se detuvo exitosamente usando la señal y tiempo de espera predeterminados.