Portanto, pessoalmente, recomendo fazer isso como parte do script de implantação de imagens e contêineres, mantendo apenas os n contêineres e imagens mais recentes. Eu codifico minhas imagens do Docker com o mesmo esquema de versão que utilizo git tag
e sempre identifico a imagem mais recente do Docker como "mais recente". Isso significa que, sem limpar nada, minhas imagens do Docker acabam parecendo:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
some_repo/some_image 0.0.5 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image latest 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image 0.0.4 0beabfa514ea 45 hours ago 925.4 MB
some_repo/some_image 0.0.3 54302cd10bf2 6 days ago 978.5 MB
some_repo/some_image 0.0.2 0078b30f3d9a 7 days ago 978.5 MB
some_repo/some_image 0.0.1 sdfgdf0f3d9a 8 days ago 938.5 MB
Agora, é claro, não quero manter todas as minhas imagens (ou contêineres) voltando à perpetuidade em todas as minhas caixas de produção. Eu só quero os últimos 3 ou 4 para reversões e me livrar de todo o resto. O Unix's tail
é seu melhor amigo aqui. Desde docker images
e docker ps
ambos os pedidos por data, podemos usar apenas tail
para selecionar todos, exceto os três primeiros, e removê-los:
docker rmi $(docker images -q | tail -n +4)
Execute isso junto com os scripts de implantação (ou localmente) para manter sempre imagens suficientes o suficiente para reverter confortavelmente, sem ocupar muito espaço ou sobrecarregar as imagens antigas.
Pessoalmente, só mantenho um contêiner na minha caixa de produção a qualquer momento, mas você pode fazer o mesmo com os contêineres se quiser mais:
docker rm $(docker ps -aq | tail -n +4)
Finalmente, no meu exemplo simplificado, estamos lidando apenas com um repositório de cada vez, mas se você tiver mais, poderá ficar um pouco mais sofisticado com a mesma idéia. Digamos que eu apenas queira manter as três últimas imagens de some_repo / some_image. Eu só posso misturar grep
e awk
e estar no meu caminho:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Novamente, a mesma idéia se aplica aos contêineres, mas você entende isso a esse ponto, então eu pararei de dar exemplos.