¿Debería preocuparme por el exceso de contenedores Docker que no funcionan?


Cada comando docker run, o cada comando RUN dentro de un Dockerfile, crea un contenedor. Si el contenedor ya no se está ejecutando, todavía se puede ver con docker ps -a.

¿Debería preocuparme por tener una enorme lista de contenedores que no funcionan? ¿Debería emitir docker rm en contenedores que no funcionan?

No estoy seguro de las penalizaciones de rendimiento o memoria/almacenamiento en las que incurren estos contenedores que no se ejecutan.

 124
Author: Ben, 2013-06-10

4 answers

Los contenedores que no se están ejecutando no están tomando ningún recurso del sistema además del espacio en disco.

Por lo general, es bueno limpiar después de ti mismo, pero si tienes muchos de ellos sentados alrededor no debería ralentizar el rendimiento en absoluto.

Si nota una ralentización al ejecutar comandos de docker con muchos contenedores detenidos, podría ser un error en docker, y debería enviar un error.

 62
Author: Ken Cochrane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-10 13:21:41

El docker run la documentación describe cómo limpiar automáticamente el contenedor y eliminar el sistema de archivos cuando el contenedor sale:

  --rm=false: Automatically remove the container when it exits (incompatible with -d)

Lo anterior muestra que, por defecto, los contenedores no se eliminan, sino que agregar --rm=true o simplemente el short-hand --rm funcionará de la siguiente manera:

sudo docker run -i -t --rm ubuntu /bin/bash

Cuando salga del contenedor, se eliminará automáticamente.

Puede probar esto listando sus contenedores docker en una ventana de terminal:

watch -n1 'sudo ls -c /var/lib/docker/containers'

Y luego en otra ventana ejecuta este comando para ejecutar varios contenedores docker que se cerrarán automáticamente después de dormir durante un máximo de 10 segundos.

for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done
 60
Author: aculich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 07:08:11

Si ejecuta un contenedor con un volumen y no utiliza docker rm-v para eliminarlo, el volumen no se eliminará después de eliminar un contenedor. También hay un problema con un controlador de almacenamiento vfs. Si olvida limpiar, los volúmenes consumirán su espacio en disco.

 5
Author: zergood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-12 10:32:21

No estoy seguro de las penalizaciones de rendimiento o memoria/almacenamiento en las que incurren estos contenedores que no se ejecutan.

Para evaluar la cantidad de almacenamiento que están utilizando los contenedores Docker no en ejecución, puede ejecutar:

docker ps --size --filter "status=exited"

Equivalentemente, , podría ejecutar: docker container ls --filter "status=exited"

También puede usar el comando docker system df (introducido en Docker 1.13.0) para ver el uso del disco docker, por ejemplo:

username@server:~$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              44                  28                  114.7GB             84.84GB (73%)
Containers          86                  7                   62.43GB             41.67GB (66%)
Local Volumes       2                   1                   0B                  0B
Build Cache                                                 0B                  0B
 1
Author: Franck Dernoncourt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-27 06:04:54