Kullanılmayan container’ları, imajları, volume’leri ve ağları tek bir kabuk komutuyla güvenle kaldırın. Kullanılmayan Docker kaynaklarını temizleyerek sisteminizi derli toplu tutun ve disk alanı geri kazanın.
Günlük olarak Docker ile çalışıyorsanız, disk alanını ne kadar hızlı tüketebildiğini biliyorsunuz.
Zamanla sisteminizde kullanılmayan imajlar, container’lar, volume’ler ve ağlar birikir. Bunların çoğu atıl halde bekler, değerli depolama alanını kaplar ve mevcut projenizde çalışmanızı engelleyebilir. Neyse ki Docker, gereksiz kaynakları kolayca kaldıran yerleşik temizlik komutları sağlar.
Bu temizlik komutları docker prune ailesinin parçasıdır ve bugün bunların tümünü öğreneceksiniz. Disk alanını boşaltmak için hızla başvuracağınız çözüm haline gelecekler.
Pratik örneklere dalmadan önce kısa bir genel bakışla başlayalım.
Docker’da yeni misiniz? Hızlıca yetişmek için veri profesyonellerine yönelik sıfırdan Docker öğrenme rehberimize göz atın.
Docker Prune nedir?
"Docker Prune" terimi genellikle kullanılmayan ve gereksiz Docker kaynaklarını kaldırmanıza yardımcı olmak için tasarlanmış bir dizi komutu ifade eder.
Zamanla, özellikle birden çok projede çalışıyorsanız, sayısız imaj oluşturur, container çalıştırır ve volume ile ağlar kurarsınız. Tüm bunlar sisteminizde birikir ve önemli miktarda disk alanı kaplar. docker prune’un amacı bu karmaşayı temizlemek ve depolamayı geri kazanmaktır.
Bununla birlikte, docker prune göründüğünden daha fazlasıdır.
Yalnızca çalıştırabileceğiniz tek bir komuttan ibaret değildir. Aslında öyle de yapabilirsiniz, ancak bazen neyin kaldırılacağı üzerinde ince ayarlı bir kontrol gerekebilir. İşte bu noktada bu makale devreye giriyor. Yalnızca silmeyi amaçladıklarınızı sildiğinizden emin olarak budamayı etkili biçimde nasıl yöneteceğinizi ve önemli verileri yanlışlıkla kaldırmamak için güvenli bir ortamda nasıl pratik yapacağınızı gösterecek.
Ayrıca, prune komutlarının yalnızca etkin olarak kullanılmayan kaynakları kaldırdığını unutmamak gerekir. Çalışan container’lar tarafından başvurulan imajlar, volume’ler ve ağlar silinmez. Başka bir deyişle, budama aktif iş yüklerine müdahale etmez.
Bir sonraki bölümde, farklı budama komut türlerini adım adım ele alacak ve iş akışınıza nasıl uyduklarını açıklayacağız.
Docker’ı özgeçmişinize veya portföyünüze eklemek ister misiniz?Bu 10 Docker proje fikri sizi işe hazır hale getirecek.
Uygulamalı Örneklerle Tüm Docker Prune Komutları
Docker, kullanılmayan kaynakları tek tek ya da topluca temizlemenizi sağlayan birden fazla prune komutu sunar. Bu bölümde, onları hem teoride hem de pratik örneklerle öğreneceksiniz.
docker system prune
Bu, disk alanını geri kazanmak için en kapsamlı komuttur. Tek bir işlemde tüm kullanılmayan container’ları, ağları, imajları ve derleme önbelleğini kaldırır.
Tek bir komutla hızlıca disk alanı boşaltmak istiyorsanız, kullanmanız gereken komut budur.
docker system prune komutuna seçenekler geçebilirsiniz:
-a veya --all, yalnızca sarkan (etiketsiz veya herhangi bir container tarafından referans verilmeyen) imajlar yerine tüm kullanılmayan imajları kaldırır.
--filter, filtre değerleri belirtmenize olanak tanır.
-f veya --force, onay istemini atlar.
--volumes, container’lar, ağlar, imajlar ve derleme önbelleğinin yanı sıra anonim volume’leri de budar.
Varsayılan olarak, docker system prune potansiyel olarak yıkıcı bir işlem olduğundan sizden onay ister:
Görsel 1 - Docker system prune onay istemi
İstemi atlamak ve tek bir komutla tüm kullanılmayan imajları, container’ları, ağları ve volume’leri kaldırmak için şunu çalıştırın:
Görsel 2 - Tek bir docker system prune komutuyla her şeyi kaldırın
Peki ya daha ayrıntılı kontrole ihtiyacınız varsa? Şimdi onu ele alalım.
docker container prune
Kısaca, bu komut durdurulmuş tüm container’ları kaldırır.
Durdurulmuş container’lar manuel olarak kaldırılana kadar sisteminizde kalır. Disk alanı kaplayabilirler ve Docker Desktop Dashboard gibi bir araç kullanmadığınız sürece fark edilmeleri zor olabilir.
docker system prune gibi, bu komut da seçenekleri destekler:
--filter, hangi container’ların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.
-f veya --force, onay istemini atlar.
Çalışmayan container’ların bir listesi aşağıdadır:
Görsel 3 - Çalışmayan container listesi
code-server’ı (ve diğer durdurulmuş container’ları) kaldırmak için şunu çalıştırın:
Bu komut sizden onay istemeyecek ve saniyeler içinde şu tür bir çıktı göreceksiniz:
Görsel 4 - Container budama çıktı mesajı
Ve işte bu kadar, artık durdurulmuş container kalmadı:
Görsel 5 - Çalışmayan container listesi (2)
Şimdi, kullanılmayan imajlarla ilgilenelim.
docker image prune
Önceki komuta benzer şekilde, docker image prune kullanılmayan imajları kaldırır.
Varsayılan olarak yalnızca sarkan imajları kaldırır—etiketsiz ve herhangi bir container ile ilişkili olmayan imajlar. Yalnızca sarkanlar değil, tüm kullanılmayan imajları kaldırmak için isteğe bağlı bir bayrak kullanabilirsiniz.
Mevcut seçeneklerin listesi şudur
-a veya --all, yalnızca sarkanlar yerine tüm kullanılmayan imajları kaldırır.
--filter, hangi imajların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.
-f veya --force, onay istemini atlar.
Şimdi, bunu uygulamada görelim!
Sistemde şu anda bulunan imajların listesi:
Görsel 6 - Docker imajlarının listesi
Hepsini tek bir komutla kaldırmak için şunu çalıştırın:
Adından da anlaşılacağı gibi, docker volume prune komutu kullanılmayan tüm yerel volume’leri kaldırır. Başka bir deyişle, herhangi bir container tarafından referans verilmeyen volume’leri siler.
Varsayılan olarak komut yalnızca anonim volume’leri — bir container başlatıldığında Docker tarafından oluşturulan isimsiz volume’leri — kaldırır. Özellikle adlandırılmış volume’leri kaldırmak için ek bir seçenek geçirmeniz gerekir.
Kullanabileceğiniz seçenekler şunlardır:
-a veya --all, yalnızca anonim olanlar yerine tüm kullanılmayan volume’leri kaldırır.
--filter, hangi volume’lerin kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.
-f veya --force, onay istemini atlar.
Sistemimizde, bir docker-compose.yml dosyasından oluşturulmuş tek bir kullanıcı-oluşturumlu volume var:
Çalıştırdıktan sonra buna benzer bir çıktı göreceksiniz:
Görsel 10 - Volume budama çıktı mesajı
Artık hiç volume kalmadı:
Görsel 11 - Docker volume’lerinin listesi (2)
Son olarak, kullanılmayan ağların nasıl silineceğine bakalım.
docker network prune
Docker container’ları birbirleriyle iletişim kurarken genellikle kullanıcı tanımlı ağları kullanır. Ancak bu container’lar kaldırıldıktan sonra ağları genellikle sisteminizde kalır.
docker network prune komutu, artık hiçbir container tarafından kullanılmayan ağları kaldırır.
Diğer prune komutlarında olduğu gibi, birkaç seçenek içerir:
--filter, hangi ağların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.
-f veya --force, onay istemini atlar.
İmajlar, container’lar veya volume’lerin aksine, ağları Docker Desktop üzerinden görsel olarak inceleyemezsiniz, bu nedenle komut satırından çalışmanız gerekir. Mevcut ağların listesi şöyledir:
Görsel 12 - Docker ağlarının listesi
Varsayılan Docker kurulumuyla ilişkili olmayan tüm ağları kaldırmak için şunu çalıştırın:
Komutu çalıştırdıktan sonra şu tür bir çıktı göreceksiniz:
Görsel 13 - Ağ budama çıktı mesajı
Önceden çalışan container’larla ilişkili ağların tümü artık kaldırıldı:
Görsel 14 - Docker ağlarının listesi
Ancak kalan üç ağın, Docker’ın düzgün çalışması için gerekli olduğunu ve kaldırılamayacağını unutmayın.
Ve böylece docker prune komutlarının temel kullanımını tamamladık! Sırada, bu komutları güvenle kullanmak ve üretim ile hassas ortamlarda en iyi uygulamalar gibi ileri konular var.
Docker Prune’u Güvenle Kullanma
docker prune komutları disk alanını hızla geri kazanmaya yardımcı olur, ancak özellikle üretim ortamlarında dikkatle kullanılmalıdır.
Önemli container’ların, imajların veya volume’lerin yanlışlıkla silinmesi veri kaybına ve kritik iş akışlarının kesintiye uğramasına yol açabilir. Bunu önlemek için, herhangi bir prune komutunu çalıştırmadan önce neyin kaldırılacağını anlamak en iyisidir.
Bu bölümde, docker prune’u güvenle çalıştırırken alınması gereken temel önlemler açıklanmaktadır.
Nelerin kaldırılacağını anlamak
prune komutları, yalnızca etkin olarak kullanılmayan kaynakları kaldıracak şekilde tasarlanmıştır.
Örneğin, docker image prune yalnızca sarkan imajları siler ve docker volume prune yalnızca hiçbir container’a bağlı olmayan volume’leri kaldırır. Ancak -a -f gibi seçenekler eklemek, onay istemeden tüm imajları veya volume’leri kaldıracaktır.
Ayrıca, karmaşık ortamlarda bağımlılıklar gözden kaçabilir, bu nedenle budama öncesinde iki kez kontrol etmek her zaman iyi bir uygulamadır.
prune komutlarından herhangi birini çalıştırmadan önce, sisteminizi inceleyerek hangi kaynakların şu anda kullanımda olduğunu görün. Bunu yapmanın birkaç yolu vardır ve bu bölümde en yaygın olanlarını inceleyeceğiz.
Şu komutu kullanarak durdurulmuş olanlar dahil tüm container’ları görüntüleyin:
Bu çıktıları dikkatle inceleyerek kritik kaynakların yanlışlıkla silinmeyeceğinden emin olun.
Güvenlik için dry run
Ne yazık ki Docker, yıllar önce talep edilmiş olmasına rağmen budama komutlarının dry run’ı için yerleşik bir seçenek sunmuyor.
Bu nedenle, bir prune komutu çalıştırmadan önce önceki bölümde listelenen komutları kullanarak kaynakları manuel olarak incelemeniz gerekir.
Veri kalıcılığının kritik olduğu hassas bir ortamda çalışıyorsanız, volume’leri etkileyen budama komutlarını çalıştırmadan önce her zaman yedek alın.
Elbette bunlar sadece önleyici tedbirlerdir, ancak yakında bir dry-run seçeneğinin hayata geçirildiğini görmeyi umuyoruz.
Docker Prune için En İyi Uygulamalar
Docker ortamınızı gereksiz kalıntılardan arındırmak için prune komutlarını düzenli olarak çalıştırmak—hatta otomatikleştirmek—önemlidir.
Bu bölüm, üretim ortamlarında docker prune komutlarını çalıştırmaya yönelik en iyi uygulamalar üzerinden sizi yönlendirecek.
docker prune’u düzenli kullanın
Zamanla Docker, kullanılmayan imajlar, durdurulmuş container’lar ve gereksiz volume’ler biriktirir—bunların tümü önemli disk alanı tüketir.
Budama komutlarını düzenli olarak çalıştırmak ortamınızı temiz tutar ve aşırı disk kullanımını önler. Bunları bakım programınızın bir parçası haline getirmelisiniz.
Birkaç haftada bir iyi bir başlangıç noktasıdır, ancak kurulumunuz sık container oluşturma ve kaldırmayı içeriyorsa daha sık bir program düşünün.
Üretimde temkinli olun
Üretim ortamında yapılan her iş ekstra dikkat gerektirir ve Docker budaması da istisna değildir.
Bir anlık dalgınlık kesintiye veya veri kaybına yol açabilir; bunun sorumlusu olmak istemezsiniz. Üretim ortamında docker prune komutlarını çalıştırmadan önce, önceki bölümde açıklandığı gibi her zaman docker ps -a, docker images ve docker volume ls ile sistem kaynaklarını inceleyin.
Ek olarak, kapsayıcı docker system prune yerine belirli budama komutlarını kullanmak iyi bir fikirdir; istenmeyen silmelerden kurtulmak daha kolay olabilir.
docker prune’u otomatikleştirin
Bir diğer iyi uygulama, zamanlanmış görevler kullanarak docker prune komutlarını otomatikleştirerek temizlik çabalarını sadeleştirmektir.
Linux’ta komutları düzenli aralıklarla çalıştırmak için bir cron görevi oluşturabilir, Windows’ta ise benzer otomasyon için Görev Zamanlayıcıyı kullanabilirsiniz. Bu, manuel müdahaleye gerek kalmadan düzenli bir sistemi korumaya yardımcı olur. Ancak, üretim ortamında otomatik budamanın kritik iş yüklerine müdahale etmediğinden emin olun.
Örneğin, Linux’taki bu cron görevi, her pazar gece yarısında kapsamlı bir budama komutunu çalıştırır:
docker prune komutları disk alanını geri kazanmak için başvurulan çözümdür, ancak yeni imajları çekmek veya yeni container’ları çalıştırmak için yeterli alanı her zaman garanti etmeyebilirler.
Ayrıca, önemli kaynakları yanlışlıkla kaldırabilirsiniz; bu nedenle kurtarma stratejilerini tartışmak kritik önemdedir.
Bu bölümde her iki konu da ele alınacaktır.
Disk alanı sorunlarıyla karşılaşmak
Docker imajları büyük olabilir—yakın zamanda 13 GB’ı aşan bir imajımız vardı—ve daha da büyüklerinin olduğundan eminiz. Bu nedenle, docker prune çalıştırdıktan sonra bile sisteminizin disk alanı düşük kalabilir.
İmajlar, container’lar ve volume’ler tarafından tam olarak ne kadar alan kullanıldığını görmek için şu komutu çalıştırın:
docker prune komutlarıyla disk alanı geri kazanırken, yalnızca sarkan veya anonim olanları değil tüm imajları, volume’leri veya container’ları kaldırmak için -a bayrağını ekleyin. Elbette bu yaklaşımın potansiyel sakıncalarını unutmayın.
Disk alanı sorunu devam ederse, tek seçeneğiniz mevcut disk alanını artırmaktır.
Yanlışlıkla kaldırmalardan kurtulma
Kurtarma, söylemesi yapmasından zordur—bu nedenle, gerçek komutu çalıştırmadan önce budamanın neyi kaldıracağını anlamanızı öneririz.
Yine de, önemli container’ları, imajları veya volume’leri yanlışlıkla budadığınız bir durumda kalırsanız, neyin kaldırıldığını belirlemek için günlükleri kontrol etmekle başlayın.
Bu komutları çalıştırmak, Docker ile ilgili son 30 dakikalık günlükleri /tmp/logs.txt dosyasına kaydeder. Hangi container’ların veya imajların silindiğini belirlemek için bu günlükleri incelemelisiniz.
Silinen imajlar için bunları büyük olasılıkla Docker Hub gibi bir kayıttan yeniden çekebilirsiniz. Şu tür bir komut işinizi görecektir:
Silinen container’lar için kalıcı imajlara dayanıyorlarsa her zaman yeniden oluşturabilirsiniz:
docker run --name<container_name><image_name>Altyapı:
Alternatif olarak, mevcutsa yedeklerden geri yükleme yapabilirsiniz; bu, hem volume hem de container verilerini kurtarmak için kullanılabilir. Gelecekte, veri kaybını önlemek için volume anlık görüntü araçlarını kullanmayı düşünün.
Ancak en iyi strateji, bir budama komutunu çalıştırmadan önce hangi kaynakların silineceğini incelemek ve yalnızca iş akışınızı etkilemeyeceğinden kesinlikle emin olduğunuzda devam etmektir.
Docker Prune’u Özetlemek
Sonuç olarak, docker prune komut ailesi disk alanını geri kazanmanın güçlü bir yoludur, ancak ihtiyaç duyduğunuz kaynakları yanlışlıkla silme ve veri kaybına yol açma riski taşır. Bu risk, her şeyi zorla kaldıran -a -f isteğe bağlı bayrakları kullanıldığında daha da artar.
Yine de, budama sisteminizi temiz ve düzenli tutmanın başvurulan yöntemlerinden biri olmaya devam eder.
Sadece dikkatli olmanız gerekir, özellikle üretim ortamlarında. docker ps -a, docker images ve docker volume ls gibi komutları, budamadan önce tüm container’ları, imajları ve volume’leri listelemek için kullanın. Budama komutunu, listelenen kaynakları silmeyi kabul ettiğinizden ancak emin olduktan sonra çalıştırın (bunların çalışan bir container tarafından kullanılmadığını varsayarak).
Docker, konteynerleştirme ve konteyner orkestrasyonu hakkında daha fazla bilgi edinmek isterseniz DataCamp’teki şu kurslara göz atın:
Genel olarak evet, ancak dikkatle kullanılmalıdır. Yalnızca kullanımda olmayan kaynakları kaldırır; ancak kontrol etmeden çalıştırmak, özellikle üretim ortamlarında yanlışlıkla silmelere yol açabilir. -a -f gibi ek bayraklar, tüm kullanılmayan kaynakları zorla kaldıracaktır.
docker prune ile docker rm arasındaki fark nedir?⌄
docker prune, belirli bir türdeki tüm kullanılmayan kaynakları kaldırır; docker rm ise belirli container’ları veya imajları elle silmek için kullanılır.
docker system prune her şeyi siler mi? ⌄
Hayır, docker system prune kullanılmayan container’ları, ağları, imajları ve derleme önbelleğini kaldırır, ancak --volumes bayrağı belirtilmedikçe adlandırılmış volume’leri silmez.
Docker’da sarkan (dangling) imaj nedir? ⌄
Sarkan imaj, etiketlenmemiş veya herhangi bir container tarafından referans verilmeyen imajdır. Bunlar genellikle derlemelerden kalan ara imajlardır ve docker image prune komutuyla güvenle kaldırılabilir.
Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Docker'a giriş yapın ve veri uzmanlarının araç setinde Docker'ın önemini keşfedin. Docker konteynerleri, görüntüler ve daha fazlası hakkında bilgi edinin.
Günlük olarak Docker ile çalışıyorsanız, disk alanını ne kadar hızlı tüketebildiğini biliyorsunuz.
Zamanla sisteminizde kullanılmayan imajlar, container’lar, volume’ler ve ağlar birikir. Bunların çoğu atıl halde bekler, değerli depolama alanını kaplar ve mevcut projenizde çalışmanızı engelleyebilir. Neyse ki Docker, gereksiz kaynakları kolayca kaldıran yerleşik temizlik komutları sağlar.
Bu temizlik komutları
docker pruneailesinin parçasıdır ve bugün bunların tümünü öğreneceksiniz. Disk alanını boşaltmak için hızla başvuracağınız çözüm haline gelecekler.Pratik örneklere dalmadan önce kısa bir genel bakışla başlayalım.
Docker’da yeni misiniz? Hızlıca yetişmek için veri profesyonellerine yönelik sıfırdan Docker öğrenme rehberimize göz atın.
Docker Prune nedir?
"Docker Prune" terimi genellikle kullanılmayan ve gereksiz Docker kaynaklarını kaldırmanıza yardımcı olmak için tasarlanmış bir dizi komutu ifade eder.
Zamanla, özellikle birden çok projede çalışıyorsanız, sayısız imaj oluşturur, container çalıştırır ve volume ile ağlar kurarsınız. Tüm bunlar sisteminizde birikir ve önemli miktarda disk alanı kaplar.
docker prune’un amacı bu karmaşayı temizlemek ve depolamayı geri kazanmaktır.Bununla birlikte,
docker prunegöründüğünden daha fazlasıdır.Yalnızca çalıştırabileceğiniz tek bir komuttan ibaret değildir. Aslında öyle de yapabilirsiniz, ancak bazen neyin kaldırılacağı üzerinde ince ayarlı bir kontrol gerekebilir. İşte bu noktada bu makale devreye giriyor. Yalnızca silmeyi amaçladıklarınızı sildiğinizden emin olarak budamayı etkili biçimde nasıl yöneteceğinizi ve önemli verileri yanlışlıkla kaldırmamak için güvenli bir ortamda nasıl pratik yapacağınızı gösterecek.
Ayrıca, prune komutlarının yalnızca etkin olarak kullanılmayan kaynakları kaldırdığını unutmamak gerekir. Çalışan container’lar tarafından başvurulan imajlar, volume’ler ve ağlar silinmez. Başka bir deyişle, budama aktif iş yüklerine müdahale etmez.
Bir sonraki bölümde, farklı budama komut türlerini adım adım ele alacak ve iş akışınıza nasıl uyduklarını açıklayacağız.
Docker’ı özgeçmişinize veya portföyünüze eklemek ister misiniz? Bu 10 Docker proje fikri sizi işe hazır hale getirecek.
Uygulamalı Örneklerle Tüm Docker Prune Komutları
Docker, kullanılmayan kaynakları tek tek ya da topluca temizlemenizi sağlayan birden fazla
prunekomutu sunar. Bu bölümde, onları hem teoride hem de pratik örneklerle öğreneceksiniz.docker system prune
Bu, disk alanını geri kazanmak için en kapsamlı komuttur. Tek bir işlemde tüm kullanılmayan container’ları, ağları, imajları ve derleme önbelleğini kaldırır.
Tek bir komutla hızlıca disk alanı boşaltmak istiyorsanız, kullanmanız gereken komut budur.
docker system prunekomutuna seçenekler geçebilirsiniz:-aveya--all, yalnızca sarkan (etiketsiz veya herhangi bir container tarafından referans verilmeyen) imajlar yerine tüm kullanılmayan imajları kaldırır.--filter, filtre değerleri belirtmenize olanak tanır.-fveya--force, onay istemini atlar.--volumes, container’lar, ağlar, imajlar ve derleme önbelleğinin yanı sıra anonim volume’leri de budar.Varsayılan olarak,
docker system prunepotansiyel olarak yıkıcı bir işlem olduğundan sizden onay ister:Görsel 1 - Docker system prune onay istemi
İstemi atlamak ve tek bir komutla tüm kullanılmayan imajları, container’ları, ağları ve volume’leri kaldırmak için şunu çalıştırın:
Görsel 2 - Tek bir docker system prune komutuyla her şeyi kaldırın
Peki ya daha ayrıntılı kontrole ihtiyacınız varsa? Şimdi onu ele alalım.
docker container prune
Kısaca, bu komut durdurulmuş tüm container’ları kaldırır.
Durdurulmuş container’lar manuel olarak kaldırılana kadar sisteminizde kalır. Disk alanı kaplayabilirler ve Docker Desktop Dashboard gibi bir araç kullanmadığınız sürece fark edilmeleri zor olabilir.
docker system prunegibi, bu komut da seçenekleri destekler:--filter, hangi container’ların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.-fveya--force, onay istemini atlar.Çalışmayan container’ların bir listesi aşağıdadır:
Görsel 3 - Çalışmayan container listesi
code-server’ı (ve diğer durdurulmuş container’ları) kaldırmak için şunu çalıştırın:Bu komut sizden onay istemeyecek ve saniyeler içinde şu tür bir çıktı göreceksiniz:
Görsel 4 - Container budama çıktı mesajı
Ve işte bu kadar, artık durdurulmuş container kalmadı:
Görsel 5 - Çalışmayan container listesi (2)
Şimdi, kullanılmayan imajlarla ilgilenelim.
docker image prune
Önceki komuta benzer şekilde,
docker image prunekullanılmayan imajları kaldırır.Varsayılan olarak yalnızca sarkan imajları kaldırır—etiketsiz ve herhangi bir container ile ilişkili olmayan imajlar. Yalnızca sarkanlar değil, tüm kullanılmayan imajları kaldırmak için isteğe bağlı bir bayrak kullanabilirsiniz.
Mevcut seçeneklerin listesi şudur
-aveya--all, yalnızca sarkanlar yerine tüm kullanılmayan imajları kaldırır.--filter, hangi imajların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.-fveya--force, onay istemini atlar.Şimdi, bunu uygulamada görelim!
Sistemde şu anda bulunan imajların listesi:
Görsel 6 - Docker imajlarının listesi
Hepsini tek bir komutla kaldırmak için şunu çalıştırın:
Terminalde buna benzer bir çıktı göreceksiniz:
Görsel 7 - İmaj budama çıktı mesajı
Sonrasında, Docker Desktop’ta imaj kalmaz:
Görsel 8 - Docker imajlarının listesi (2)
Sırada, kullanılmayan volume’lerle ilgilenelim.
docker volume prune
Adından da anlaşılacağı gibi,
docker volume prunekomutu kullanılmayan tüm yerel volume’leri kaldırır. Başka bir deyişle, herhangi bir container tarafından referans verilmeyen volume’leri siler.Varsayılan olarak komut yalnızca anonim volume’leri — bir container başlatıldığında Docker tarafından oluşturulan isimsiz volume’leri — kaldırır. Özellikle adlandırılmış volume’leri kaldırmak için ek bir seçenek geçirmeniz gerekir.
Kullanabileceğiniz seçenekler şunlardır:
-aveya--all, yalnızca anonim olanlar yerine tüm kullanılmayan volume’leri kaldırır.--filter, hangi volume’lerin kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.-fveya--force, onay istemini atlar.Sistemimizde, bir
docker-compose.ymldosyasından oluşturulmuş tek bir kullanıcı-oluşturumlu volume var:Görsel 9 - Docker volume’lerinin listesi
Aşağıdaki komut tüm yerel volume’leri kaldırır:
Çalıştırdıktan sonra buna benzer bir çıktı göreceksiniz:
Görsel 10 - Volume budama çıktı mesajı
Artık hiç volume kalmadı:
Görsel 11 - Docker volume’lerinin listesi (2)
Son olarak, kullanılmayan ağların nasıl silineceğine bakalım.
docker network prune
Docker container’ları birbirleriyle iletişim kurarken genellikle kullanıcı tanımlı ağları kullanır. Ancak bu container’lar kaldırıldıktan sonra ağları genellikle sisteminizde kalır.
docker network prunekomutu, artık hiçbir container tarafından kullanılmayan ağları kaldırır.Diğer prune komutlarında olduğu gibi, birkaç seçenek içerir:
--filter, hangi ağların kaldırılacağını kontrol etmek için anahtar-değer çiftleri belirtmenize olanak tanır.-fveya--force, onay istemini atlar.İmajlar, container’lar veya volume’lerin aksine, ağları Docker Desktop üzerinden görsel olarak inceleyemezsiniz, bu nedenle komut satırından çalışmanız gerekir. Mevcut ağların listesi şöyledir:
Görsel 12 - Docker ağlarının listesi
Varsayılan Docker kurulumuyla ilişkili olmayan tüm ağları kaldırmak için şunu çalıştırın:
Komutu çalıştırdıktan sonra şu tür bir çıktı göreceksiniz:
Görsel 13 - Ağ budama çıktı mesajı
Önceden çalışan container’larla ilişkili ağların tümü artık kaldırıldı:
Görsel 14 - Docker ağlarının listesi
Ancak kalan üç ağın, Docker’ın düzgün çalışması için gerekli olduğunu ve kaldırılamayacağını unutmayın.
Ve böylece
docker prunekomutlarının temel kullanımını tamamladık! Sırada, bu komutları güvenle kullanmak ve üretim ile hassas ortamlarda en iyi uygulamalar gibi ileri konular var.Docker Prune’u Güvenle Kullanma
docker prunekomutları disk alanını hızla geri kazanmaya yardımcı olur, ancak özellikle üretim ortamlarında dikkatle kullanılmalıdır.Önemli container’ların, imajların veya volume’lerin yanlışlıkla silinmesi veri kaybına ve kritik iş akışlarının kesintiye uğramasına yol açabilir. Bunu önlemek için, herhangi bir prune komutunu çalıştırmadan önce neyin kaldırılacağını anlamak en iyisidir.
Bu bölümde,
docker prune’u güvenle çalıştırırken alınması gereken temel önlemler açıklanmaktadır.Nelerin kaldırılacağını anlamak
prunekomutları, yalnızca etkin olarak kullanılmayan kaynakları kaldıracak şekilde tasarlanmıştır.Örneğin,
docker image pruneyalnızca sarkan imajları siler vedocker volume pruneyalnızca hiçbir container’a bağlı olmayan volume’leri kaldırır. Ancak-a -fgibi seçenekler eklemek, onay istemeden tüm imajları veya volume’leri kaldıracaktır.Ayrıca, karmaşık ortamlarda bağımlılıklar gözden kaçabilir, bu nedenle budama öncesinde iki kez kontrol etmek her zaman iyi bir uygulamadır.
prunekomutlarından herhangi birini çalıştırmadan önce, sisteminizi inceleyerek hangi kaynakların şu anda kullanımda olduğunu görün. Bunu yapmanın birkaç yolu vardır ve bu bölümde en yaygın olanlarını inceleyeceğiz.Şu komutu kullanarak durdurulmuş olanlar dahil tüm container’ları görüntüleyin:
Buna benzer bir çıktı görmelisiniz:
Görsel 15 - Tüm Docker container’larının listesi
Benzer şekilde, kullanılmayanlar dahil tüm imajları listelemek için bu komutu kullanın:
Çıktı, yukarıdakine benzer bir yapıda olacaktır:
Görsel 16 - Tüm Docker imajlarının listesi
Volume’leri kontrol etmek için şu komutu çalıştırarak tüm volume’leri listeleyin:
Görsel 17 - Tüm Docker volume’lerinin listesi
Bu çıktıları dikkatle inceleyerek kritik kaynakların yanlışlıkla silinmeyeceğinden emin olun.
Güvenlik için dry run
Ne yazık ki Docker, yıllar önce talep edilmiş olmasına rağmen budama komutlarının dry run’ı için yerleşik bir seçenek sunmuyor.
Bu nedenle, bir prune komutu çalıştırmadan önce önceki bölümde listelenen komutları kullanarak kaynakları manuel olarak incelemeniz gerekir.
Veri kalıcılığının kritik olduğu hassas bir ortamda çalışıyorsanız, volume’leri etkileyen budama komutlarını çalıştırmadan önce her zaman yedek alın.
Elbette bunlar sadece önleyici tedbirlerdir, ancak yakında bir dry-run seçeneğinin hayata geçirildiğini görmeyi umuyoruz.
Docker Prune için En İyi Uygulamalar
Docker ortamınızı gereksiz kalıntılardan arındırmak için
prunekomutlarını düzenli olarak çalıştırmak—hatta otomatikleştirmek—önemlidir.Bu bölüm, üretim ortamlarında
docker prunekomutlarını çalıştırmaya yönelik en iyi uygulamalar üzerinden sizi yönlendirecek.docker prune’u düzenli kullanın
Zamanla Docker, kullanılmayan imajlar, durdurulmuş container’lar ve gereksiz volume’ler biriktirir—bunların tümü önemli disk alanı tüketir.
Budama komutlarını düzenli olarak çalıştırmak ortamınızı temiz tutar ve aşırı disk kullanımını önler. Bunları bakım programınızın bir parçası haline getirmelisiniz.
Birkaç haftada bir iyi bir başlangıç noktasıdır, ancak kurulumunuz sık container oluşturma ve kaldırmayı içeriyorsa daha sık bir program düşünün.
Üretimde temkinli olun
Üretim ortamında yapılan her iş ekstra dikkat gerektirir ve Docker budaması da istisna değildir.
Bir anlık dalgınlık kesintiye veya veri kaybına yol açabilir; bunun sorumlusu olmak istemezsiniz. Üretim ortamında
docker prunekomutlarını çalıştırmadan önce, önceki bölümde açıklandığı gibi her zamandocker ps -a,docker imagesvedocker volume lsile sistem kaynaklarını inceleyin.Ek olarak, kapsayıcı
docker system pruneyerine belirli budama komutlarını kullanmak iyi bir fikirdir; istenmeyen silmelerden kurtulmak daha kolay olabilir.docker prune’u otomatikleştirin
Bir diğer iyi uygulama, zamanlanmış görevler kullanarak
docker prunekomutlarını otomatikleştirerek temizlik çabalarını sadeleştirmektir.Linux’ta komutları düzenli aralıklarla çalıştırmak için bir cron görevi oluşturabilir, Windows’ta ise benzer otomasyon için Görev Zamanlayıcıyı kullanabilirsiniz. Bu, manuel müdahaleye gerek kalmadan düzenli bir sistemi korumaya yardımcı olur. Ancak, üretim ortamında otomatik budamanın kritik iş yüklerine müdahale etmediğinden emin olun.
Örneğin, Linux’taki bu cron görevi, her pazar gece yarısında kapsamlı bir budama komutunu çalıştırır:
Docker Prune Sorunlarını Giderme
docker prunekomutları disk alanını geri kazanmak için başvurulan çözümdür, ancak yeni imajları çekmek veya yeni container’ları çalıştırmak için yeterli alanı her zaman garanti etmeyebilirler.Ayrıca, önemli kaynakları yanlışlıkla kaldırabilirsiniz; bu nedenle kurtarma stratejilerini tartışmak kritik önemdedir.
Bu bölümde her iki konu da ele alınacaktır.
Disk alanı sorunlarıyla karşılaşmak
Docker imajları büyük olabilir—yakın zamanda 13 GB’ı aşan bir imajımız vardı—ve daha da büyüklerinin olduğundan eminiz. Bu nedenle,
docker pruneçalıştırdıktan sonra bile sisteminizin disk alanı düşük kalabilir.İmajlar, container’lar ve volume’ler tarafından tam olarak ne kadar alan kullanıldığını görmek için şu komutu çalıştırın:
Görsel 18 - Docker tarafından kullanılan alan
docker prunekomutlarıyla disk alanı geri kazanırken, yalnızca sarkan veya anonim olanları değil tüm imajları, volume’leri veya container’ları kaldırmak için-abayrağını ekleyin. Elbette bu yaklaşımın potansiyel sakıncalarını unutmayın.Disk alanı sorunu devam ederse, tek seçeneğiniz mevcut disk alanını artırmaktır.
Yanlışlıkla kaldırmalardan kurtulma
Kurtarma, söylemesi yapmasından zordur—bu nedenle, gerçek komutu çalıştırmadan önce budamanın neyi kaldıracağını anlamanızı öneririz.
Yine de, önemli container’ları, imajları veya volume’leri yanlışlıkla budadığınız bir durumda kalırsanız, neyin kaldırıldığını belirlemek için günlükleri kontrol etmekle başlayın.
macOS’te bu, aşağıdaki iki komut çalıştırılarak yapılabilir (Windows ve Linux için seçenekler):
Bu komutları çalıştırmak, Docker ile ilgili son 30 dakikalık günlükleri
/tmp/logs.txtdosyasına kaydeder. Hangi container’ların veya imajların silindiğini belirlemek için bu günlükleri incelemelisiniz.Silinen imajlar için bunları büyük olasılıkla Docker Hub gibi bir kayıttan yeniden çekebilirsiniz. Şu tür bir komut işinizi görecektir:
Silinen container’lar için kalıcı imajlara dayanıyorlarsa her zaman yeniden oluşturabilirsiniz:
Alternatif olarak, mevcutsa yedeklerden geri yükleme yapabilirsiniz; bu, hem volume hem de container verilerini kurtarmak için kullanılabilir. Gelecekte, veri kaybını önlemek için volume anlık görüntü araçlarını kullanmayı düşünün.
Ancak en iyi strateji, bir budama komutunu çalıştırmadan önce hangi kaynakların silineceğini incelemek ve yalnızca iş akışınızı etkilemeyeceğinden kesinlikle emin olduğunuzda devam etmektir.
Docker Prune’u Özetlemek
Sonuç olarak,
docker prunekomut ailesi disk alanını geri kazanmanın güçlü bir yoludur, ancak ihtiyaç duyduğunuz kaynakları yanlışlıkla silme ve veri kaybına yol açma riski taşır. Bu risk, her şeyi zorla kaldıran-a -fisteğe bağlı bayrakları kullanıldığında daha da artar.Yine de, budama sisteminizi temiz ve düzenli tutmanın başvurulan yöntemlerinden biri olmaya devam eder.
Sadece dikkatli olmanız gerekir, özellikle üretim ortamlarında.
docker ps -a,docker imagesvedocker volume lsgibi komutları, budamadan önce tüm container’ları, imajları ve volume’leri listelemek için kullanın. Budama komutunu, listelenen kaynakları silmeyi kabul ettiğinizden ancak emin olduktan sonra çalıştırın (bunların çalışan bir container tarafından kullanılmadığını varsayarak).Docker, konteynerleştirme ve konteyner orkestrasyonu hakkında daha fazla bilgi edinmek isterseniz DataCamp’teki şu kurslara göz atın: