
Acabo de descubrir que service docker stop
en Ubuntu 18.04 no cierra todos los contenedores en ejecución. Ya no puedo controlarlos, pero los containerd-ship
procesos y todo lo que está dentro de los contenedores todavía se están ejecutando (pero no son accesibles, tal vez porque se eliminó la red).
Además, detener el contenedor no cambia nada porque, por diseño, esto no detiene los contenedores.
E incluso después de killall containerd-shim
que ya es bastante duro, algunos procesos todavía se están ejecutando, como gunicorn
desde gitlab, backuppc y una instancia UML de Linux.
¿Cómo hago un cierre limpio de todos los contenedores en ejecución? El comportamiento actual es responsable de que mi sistema se cuelgue mientras se apaga.
Actualizar: Acabo de ver que estoy usando el repositorio (https://download.docker.com/linux/ubuntu) que proviene de un tutorial de Kubernetes (que aún no uso). Esta fuente trae versiones propietarias de containerd.io, docker-ce y docker-ce-cli.
Respuesta1
Problema resuelto.
El punto principal era que tenía un repositorio adicional, directamente desde Docker (https://download.docker.com/linux/ubuntu) que trajo versiones propietarias de containerd.io, docker-ce y docker-ce-cli. El universo Ubuntu, por otro lado, ni siquiera estaba en mi archivo /etc/apt/source.list
.
Ahora actualicé a 20.04 y uso los paquetes de Docker originales (docker.io) del universo Ubuntu. Esto funciona bien y se apaga como se esperaba. Estoy seguro de que esto también habría funcionado en 18.04, pero quería evitar degradar la ventana acoplable cambiando el repositorio.
Respuesta2
En mi instalación de Ubuntu 18.04 systemctl stop docker
se cierran todos los contenedores en ejecución. systemctl start docker
inicia todos los contenedores nuevamente. Estoy de acuerdo con BMitch, se necesitaría más información sobre su instalación para diagnosticar el problema.
Otra forma de cerrar todos los contenedores en ejecución sería:
docker ps -q | xargs docker stop