Cada docker run
comando, o cada RUN
comando dentro de un Dockerfile, crea un contenedor. Si el contenedor ya no se está ejecutando, aún se puede ver con docker ps -a
.
¿Debería preocuparme tener una lista enorme de contenedores que no funcionan? ¿Debo emitir docker rm
en contenedores que no se ejecutan?
No estoy seguro de qué rendimiento o penalizaciones de memoria / almacenamiento incurren en estos contenedores que no se ejecutan.
docker exec
un tiempo se agregó un comando; consulte docs.docker.com/reference/commandline/cli/#exec : ejecutará un comando desde un contenedor en ejecución.Respuestas:
Los contenedores que no se están ejecutando no están tomando recursos del sistema además del espacio en disco.
Por lo general, es bueno limpiar después de ti, pero si tienes muchos de ellos sentados, no debería ralentizar el rendimiento en absoluto.
Si nota una ralentización al ejecutar comandos de Docker con muchos contenedores detenidos, puede ser un error en Docker, y debe enviar un error.
fuente
RUN
comando ahora se han movido a: docs.docker.io/en/latest/reference/builder/#runLa
docker run
documentación describe cómo limpiar automáticamente el contenedor y eliminar el sistema de archivos cuando el contenedor sale:Lo anterior muestra que, por defecto, los contenedores no se eliminan, pero agregar
--rm=true
o solo la abreviatura--rm
funcionará así:Cuando salga del contenedor, se eliminará automáticamente.
Puede probar esto enumerando sus contenedores acoplables en una ventana de terminal:
Y luego, en otra ventana, ejecute este comando para ejecutar múltiples contenedores acoplables que saldrán automáticamente después de dormir durante hasta 10 segundos.
fuente
-rm
está en desuso y se eliminará en algún momento, use--rm
en su lugar.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.
fuente
Para evaluar cuánto almacenamiento están utilizando los contenedores Docker que no se ejecutan, puede ejecutar:
--size
: muestra el tamaño total de los archivos (para su información: explique la columna TAMAÑO en "docker ps -s" y qué significa la palabra clave "virtual" # 1520 ).--filter "status=exited"
: lista solo contenedores detenidos .De manera equivalente , podría ejecutar:
docker container ls --filter "status=exited"
También puede usar el comando
docker system df
(introducido en Docker 1.13.0, enero de 2017) para ver el uso del disco acoplable, por ejemplo:fuente