2. Docker

2.5. Parar contenidors a Docker

Iniciar o aturar un contenidor no és el mateix que iniciar o aturar un procés. Per finalitzar un contenidor, Docker proporciona les ordres stop i kill. Encara que sembli que totes dues ordres facin el mateix, la seva execució és, internament, diferent. Per aturar un procés, podem utilitzar tant el ContainerId com el nom del contenidor.

L’ordre stop atura el contenidor d’una manera menys agressiva que kill. Això és degut al tipus de senyal que s’envia al contenidor. L’ordre stop envia un senyal SIGTERM, que es pot bloquejar o parar, mentre que kill envia un senyal SIGKILL que no es pot gestionar. Si en un temps prudencial l’ordre stop no ha aturat el contenidor, Docker envia automàticament un senyal SIGKILL. Per defecte, aquest període són 10 segons, però si volem modificar-lo podem fer ús de l’opció -t expressada en segons. Així:

$ docker container stop -t 77 hello-world

Docker pararia el procés mitjançant una SIGKILL després de 77 segons.

Com hem vist en l’apartat anterior també podríem utilitzar l’ordre rm per finalitzar un contenidor. La diferència rau en el fet que l’ordre rm elimina el procés i no el podem visualitzar en la llista docker ps -a, mentre que, parant el contenidor, el podem mantenir i reutilitzar posteriorment.

Una altra opció interessant és pausar el contenidor. Si aturem un contenidor, alliberem els recursos de memòria i CPU; si el pausem, només alliberem CPU.

$ docker container pause hello-world