2. Docker

2.5. Parar contenedores en Docker

Iniciar o parar un contenedor no es lo mismo que iniciar o parar un proceso. Para finalizar un contenedor, Docker proporciona los comandos stop y kill. Aunque parezca que ambos comandos hagan lo mismo, internamente su ejecución es distinta. Para parar un proceso, tanto podemos utilizar el ContainerId como el nombre del contenedor.

El comando stop para el contenedor de una manera menos agresiva que kill. Esto es debido al tipo de señal que se envía al contenedor. stop envía una señal SIGTERM, la cual se puede bloquear o parar, mientras que kill envía una señal SIGKILL que no se puede gestionar. Si en un tiempo prudencial el comando stop no ha parado el contenedor, Docker automáticamente envía una señal SIGKILL. Por defecto ese tiempo son 10 segundos, pero si queremos modificarlo podemos utilizar la opción -t expresada en segundos. Así:

$ docker container stop -t 77 hello-world

Docker pararía el proceso mediante una SIGKILL pasador 77 segundos.

Como hemos visto en el apartado anterior también podríamos utilizar el comando rm para finalizar un contenedor. La diferencia reside en que el comando rm elimina el proceso y no lo podemos visualizar en la lista docker ps -a, mientras que parando el contenedor lo podemos mantener y reutilizar posteriormente.

Otra opción interesante es pausar el contenedor. Mientras que si paramos un contenedor liberamos los recursos de memoria y CPU, al pausarlo únicamente liberamos CPU.

$ docker container pause hello-world