Como remover "dangling images" no Docker.

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.

image.png

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!