Actualización de septiembre de 2016: Docker 1.13: PR 26108 y commit 86de7c0 introducen algunos comandos nuevos para ayudar a facilitar la visualización de cuánto espacio ocupan los datos del demonio de Docker en el disco y permiten limpiar fácilmente el exceso "innecesario".
docker system prune
eliminará TODOS los datos colgantes (es decir, en orden: contenedores detenidos, volúmenes sin contenedores e imágenes sin contenedores). Incluso datos no utilizados, con -a
opción.
Tu también tienes:
Para imágenes sin usar , use docker image prune -a
(para eliminar imágenes colgantes y sin usar).
Advertencia: ' sin usar ' significa "imágenes a las que ningún contenedor hace referencia": tenga cuidado antes de usar -a
.
Como se ilustra en la respuesta de AL , eliminará todas las imágenes no utilizadas, no solo las que cuelgan ... lo que puede ser demasiado.docker system prune --all
La combinación docker xxx prune
con la --filter
opción puede ser una excelente manera de limitar la poda ( docker SDK API 1.28 mínimo, por lo que docker 17.04+ )
Los filtros compatibles actualmente son:
until (<timestamp>)
- solo elimine contenedores, imágenes y redes creados antes de la marca de tiempo dada
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, O label!=<key>=<value>
) - solamente eliminar los recipientes, imágenes, redes, y los volúmenes con (o sin , en caso de que label!=...
se utiliza) las etiquetas especificadas.
Consulte " Podar imágenes " para ver un ejemplo.
Respuesta original (septiembre de 2016)
Yo suelo hacer:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Tengo un alias para eliminar esas [imágenes colgantes] 13 :drmi
El dangling=true
filtro encuentra imágenes no utilizadas
De esa forma, se elimina cualquier imagen intermedia que ya no haga referencia a una imagen etiquetada.
Hago lo mismo primero para los procesos salidos (contenedores)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Como haridsv señala en los comentarios :
Técnicamente, primero debe limpiar los contenedores antes de limpiar las imágenes, ya que esto capturará más imágenes colgantes y menos errores .
Jess Frazelle (jfrazelle) tiene la función bashrc :
dcleanup(){
docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
Para eliminar imágenes antiguas, y no solo imágenes "colgantes sin referencia", puede considerar docker-gc
:
Un simple contenedor de Docker y script de recolección de basura de imagen.
- Los contenedores que salieron hace más de una hora se eliminan.
- Las imágenes que no pertenecen a ningún contenedor restante después de eso se eliminan.
"dangling=true"
realmente significa?