Filtrar imagens por status 'dangling'
Nesta etapa, você aprenderá como filtrar imagens Docker com base em seu status "dangling" (pendente). Imagens "dangling" são camadas que não têm relação com nenhuma imagem marcada. Elas são frequentemente o resultado da construção de novas versões de uma imagem, o que deixa as camadas antigas sem uma tag. Essas imagens "dangling" consomem espaço em disco e podem ser limpas.
Para filtrar imagens por seu status "dangling", você pode usar a flag --filter com a chave dangling. O valor pode ser true para mostrar apenas imagens "dangling" ou false para mostrar apenas imagens não "dangling".
Primeiro, vamos criar uma imagem "dangling". Podemos fazer isso construindo uma nova imagem que substitui uma existente. Usaremos um Dockerfile simples para isso.
Crie um arquivo chamado Dockerfile em seu diretório ~/project com o seguinte conteúdo:
FROM alpine
CMD ["echo", "Hello, world!"]
Este Dockerfile é muito simples. Ele usa a imagem alpine como base e apenas imprime "Hello, world!" quando um container é executado a partir dele.
Agora, vamos construir uma imagem a partir deste Dockerfile e marcá-la.
Execute o seguinte comando para construir a imagem e marcá-la como my-image:latest:
docker build -t my-image:latest .
Você deve ver a saída indicando o processo de construção:
[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest
Agora, vamos modificar o Dockerfile ligeiramente e construí-lo novamente com a mesma tag. Isso criará uma nova imagem com a tag my-image:latest, e a imagem anterior que tinha essa tag se tornará "dangling".
Edite o Dockerfile em seu diretório ~/project para alterar o comando:
FROM alpine
CMD ["echo", "Hello again!"]
Agora, construa a imagem novamente com a mesma tag:
docker build -t my-image:latest .
Você verá uma saída semelhante à construção anterior, mas um novo ID de imagem será gerado. A imagem anterior com a tag my-image:latest agora é "dangling".
Vamos listar todas as imagens para ver a imagem "dangling".
Execute o comando:
docker images
Você pode ver uma imagem com <none> nas colunas REPOSITORY e TAG. Esta é uma imagem "dangling".
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
<none> <none> <old_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Agora, vamos filtrar para mostrar apenas as imagens "dangling" usando a flag --filter dangling=true.
Execute o comando:
docker images --filter dangling=true
Você deve ver apenas a imagem "dangling":
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> <old_image_id> <created_time> <size>
Para ver apenas imagens não "dangling", você pode usar --filter dangling=false.
Execute o comando:
docker images --filter dangling=false
Isso listará todas as imagens que não são "dangling":
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Isso demonstra como filtrar imagens com base em seu status "dangling".