Como remover "dangling images" no Docker.
Aprenda a liberar espaço em disco ao remover imagens que não estão sendo utilizadas no Docker.
Se você chegou a este post é porque provavelmente se deparou com a seguinte situação no seu terminal.
Estou criando este artigo para compartilhar a solução e para servir como um lembrete para mim (é sério, eu sempre esqueço o comando 😢).
Solução direta (para as pessoas que estão com pressa):
docker rmi $(docker images -f "dangling=true" -q)
Se quiser forçar a remoção de imagens:
docker rmi -f $(docker images -f "dangling=true" -q)
Por que isso acontece?
Esse problema pode acontecer por dois fatores:
O primeiro é que você criou uma imagem sem um nome, então o Docker irá exibir <none>
no terminal.
O segundo motivo é que quando você cria uma nova build de uma imagem Docker com o mesmo nome e versão de uma imagem anterior, a imagem antiga é renomeada, na verdade é como se ela perdesse o nome para a build atual, com isso o Docker também passará a exibir a build antiga como <none>
.
Como o comando do início do post funciona?
Se você executar apenas: docker images -f "dangling=true"
, o Docker irá exibir uma lista de dangling images presentes no disco. O -q serve como um filtro para obter apenas os IDs das imagens.
Então o que fazemos é passar o resultado do docker images -f "dangling=true"
como argumento para o comando docker rmi [-f] ...
, sendo que este comando é responsável por remover imagens Docker.
Conclusão
Como vimos, o Docker cria as famosas "dangling images" em situações específicas. Penso que é sempre interessante ficar de olho nelas para evitar a utilização desnecessária de espaço em disco com builds obsoletas.
Espero que este artigo tenha te ajudado, até mais!