Bu nedenle, kişisel olarak bunu yalnızca en son n kapsayıcısını ve resimlerini koruyarak hem resimler hem de kapsayıcılar için dağıtım komut dosyanızın bir parçası olarak yapmanızı öneririm. Docker görüntülerimi git tag
her zaman en son Docker görüntüsünü "en son" ile etiketlemenin yanı sıra kullandığım sürümleme şemasıyla da etiketliyorum. Bu, hiçbir şeyi temizlemeden Docker görüntülerimin aşağıdaki gibi görüneceği anlamına gelir:
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
Şimdi, elbette tüm görüntülerimin (veya konteynerlerimin) tüm üretim kutularımda kalıcı olmasını sağlamak istemiyorum. Sadece son 3 veya 4'ü geri almak ve diğer her şeyden kurtulmak istiyorum. Unix's tail
burada en iyi arkadaşın. Bu tarihten beri docker images
ve docker ps
her ikisi de tarihe göre sıralanırken, yalnızca tail
ilk üçten fazlasını seçip kaldırabiliriz:
docker rmi $(docker images -q | tail -n +4)
Çok fazla yer kaplamadan veya eski görüntülerle işleri karıştırmadan rahatça geri dönmek için her zaman yeterli görüntüyü saklamak için dağıtım komut dosyalarınızla (veya yerel olarak) çalıştırın.
Şahsen, üretim kutumda herhangi bir zamanda sadece bir kap tutuyorum, ancak daha fazlasını isterseniz aynı tür kapları da yapabilirsiniz:
docker rm $(docker ps -aq | tail -n +4)
Son olarak, basitleştirilmiş örneğimde, bir seferde sadece bir havuzla uğraşıyoruz, ancak daha fazlasına sahipseniz, aynı fikirle biraz daha sofistike olabilirsiniz. Diyelim ki son üç görüntüyü some_repo / some_image adresinden saklamak istiyorum. Sadece karışabilirim grep
ve awk
yoluma devam edebilirim:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Yine, aynı fikir kaplar için de geçerlidir, ancak bu noktaya kadar alırsınız, bu yüzden örnek vermeyi bırakacağım.