Liberar espacio usado por Docker.
En Docker hay 3 objetos principales, Imágenes, Contenedores y Volúmenes.
Tal como funcionan los contenedores, al borrarlos pueden quedar volúmenes en nuestro equipo real que no se borren.
Con este comando puedo ver volúmenes de tipo “dangling”, que no están siendo usados por ningún contenedor.
# docker volume ls -f dangling=true
DRIVER VOLUME NAME
local 1cdd02cf125f74134647deca6b7485fd478b7727d3fe1c02230e45c10ab0fddd
local 2531068d83397f8472106a3bb478eba6b30612aa0daf541ea89e61f851b4384b
local 74eec6ee7bd95a902aa4243ea617244de367569a1b3ae19d7b01642e98ba8c0f
local 7a2efb45eb0fcc7394c62d38ccb2bb087ac9e07615642cdb4db70a3516648b68
local 7e28b0fe573d81760f032f20ea11ac1243ea26172fde9b97b6aa5fa7e95082b1
local b38e1526c5b7f1fcb697fbcdb96031ecd2e5b5d95efd20c630efe792855736e0
local f8b780771367c3e6e5591ae362c7ac06343cd5a35a8c00c3af4e40f14848fc53
Y parar borrarlos :
# docker volume rm $(docker volume ls -f dangling=true -q)
1cdd02cf125f74134647deca6b7485fd478b7727d3fe1c02230e45c10ab0fddd
2531068d83397f8472106a3bb478eba6b30612aa0daf541ea89e61f851b4384b
74eec6ee7bd95a902aa4243ea617244de367569a1b3ae19d7b01642e98ba8c0f
7a2efb45eb0fcc7394c62d38ccb2bb087ac9e07615642cdb4db70a3516648b68
7e28b0fe573d81760f032f20ea11ac1243ea26172fde9b97b6aa5fa7e95082b1
b38e1526c5b7f1fcb697fbcdb96031ecd2e5b5d95efd20c630efe792855736e0
f8b780771367c3e6e5591ae362c7ac06343cd5a35a8c00c3af4e40f14848fc53
Puedo ver ahora las imágenes que no están siendo usadas por ningún contenedor. Para borrarlas “docker rmi xxxx”.
# docker images -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
debian 9.0 a2ff708b7413 6 months ago 100MB
Y luego parar borrarlas
# docker rmi debian:9.0
Untagged: debian:9.0
Untagged: debian@sha256:7d067f77d2ae5a23fe6920f8fbc2936c4b0d417e9d01b26372561860750815f0
Deleted: sha256:a2ff708b74137df70ad546f35d6034ef3b3b354b3020c318d790b6132e075367
Deleted: sha256:6b3f8ebf864ca8318043df199cfadafff30d4b7cd36fced3e8aa70a318a7ee7d
Si al tratar de borrarlas me da un error del este tipo, indica que la imágen af555e7b1d29 está siendo usada por el contenedor eae9dd946186. Para eliminarla y también el contenedor debo invocar el comando con un “–force” al final.
# docker rmi mysql80
Error response from daemon: conflict: unable to remove repository reference "mysql80" (must force) - container eae9dd946186 is using its referenced image af555e7b1d29
Y por último parar borrar contenedores que no quiere usar mas:
Primero veo los que tengo creados.
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68396ba0e84e microsoft/mssql-server-linux:2017-latest "/bin/sh -c /opt/mss…" 2 days ago Exited (137) 47 hours ago sql2017
eae9dd946186 mysql80 "/entrypoint.sh mysq…" 2 days ago Exited (0) 2 days ago mysql803
011f36f901ad b4127bf93ca9 "docker-entrypoint.s…" 3 weeks ago Exited (0) 6 hours ago mariadb102
87524b571ac7 mariadb:10.3 "docker-entrypoint.s…" 3 weeks ago Exited (1) 3 weeks ago mariadb103
Y luego borro uno con :
# docker rm 68396ba0e84e