Docker, uygulamalarınızı ve servislerinizi container’lara sararak her yerde çalıştırmayı oldukça kolay hale getirir. Ancak zamanla kullanılmayan image’lar, container’lar ve volume’ler birikerek hem terminal çıktısını karıştırır hem de disk alanınızı gereksiz yere doldurur. Bu kılavuz, sisteminizi düzenli tutmak ve disk alanınızı boşaltmak için Docker ile kullanabileceğiniz temel temizlik komutlarını cheat sheet formatında sunar.
Docker, temizleme işlemlerini kolaylaştırmak için komut satırında kullanabileceğiniz bir dizi araç sağlar. Bu araçlarla gereksiz yer kaplayan kaynakları (image’lar, container’lar ve volume’ler) hızlıca kaldırabilirsiniz. Aşağıdaki rehber, en yaygın temizlik görevleri için komut örnekleri ve açıklamaları içermektedir.
Kılavuzun Kullanımı:
- Bu kılavuz, kendinden açıklamalı komut satırı snippet’lerinden oluşan bir cheat sheet formatındadır.
- Gerçekleştirmek istediğiniz göreve uygun bölüme doğrudan atlayabilirsiniz.
- Not: Komut ikame sözdizimi
$(komut)
birçok popüler shell’de (bash, zsh, Windows Powershell) kullanılabilir.
Kullanılmayan veya Askıda Kalan Image’ları, Container’ları ve Volume’leri Temizleme
Docker, sistemde askıda kalan (yani bir container ile ilişkilendirilmeyen ya da etiketlenmemiş) tüm kaynakları (image’lar, container’lar, volume’ler ve network’ler) temizlemek için tek bir komut sunar. Bu komut, her türde kullanılmayan kaynağı tek seferde temizlemenizi sağlar.
docker system prune
Tüm Kullanılmayan Kaynakları Temizleme
Eğer durdurulmuş container’lar, kullanılmayan tüm image’lar (sadece askıda kalanlar değil) ve kullanılmayan volume’leri kaldırmak istiyorsanız, -a
bayrağını eklemeniz gerekir:
docker system prune -a
Bu komut, tüm durdurulmuş container’ları, kullanılmayan network’leri, askıda kalan image’ları ve askıda kalan volume’leri kaldırır.
Docker Image’ları Kaldırma
Belirli Image’ları Kaldırma
Bir veya birden fazla spesifik image’ı kaldırmak için ilk olarak image ID’sini bulmanız gerekir. docker images -a
komutunu kullanarak sistemdeki tüm image’ları listeleyebilirsiniz. Bu komut, her bir image’i (ara katmanlar dahil) gösterir.
docker images -a
Bir veya birden fazla image ID’sini öğrendikten sonra, bunları aşağıdaki komutla kaldırabilirsiniz:
docker rmi Image_ID Image_ID
Not: -a
bayrağı, tüm image’ları gösterir (ara katmanlar dahil). Sadece tagged image’ları görmek için docker images
komutunu bayraksız kullanabilirsiniz. Ancak bazı image’lar, herhangi bir tag ile ilişkilendirilmemiş olabilir ve yine de sistemde yer kaplayabilir. -a
bayrağı, bu tür image’ları tespit etmek ve gereksiz disk kullanımını önlemek için oldukça yararlıdır.
Askıda Kalan (Dangling) Image’ları Kaldırma
Docker image’ları, birçok katmandan oluşur. Askıda kalan image’lar, herhangi bir tagged image ile ilişkilendirilmemiş katmanlardır. Bu image’lar artık bir işlev görmez ve disk alanınızı gereksiz yere kullanır. Askıda kalan image’ları şu şekilde listeleyip kaldırabilirsiniz:
docker images -f dangling=true
Eğer bu image’ları silmek istiyorsanız:
docker image prune
Not: Eğer bir image’ı tag vermeden oluşturursanız, bu image askıda kalan image’lar arasında görünecektir. Bu durumu önlemek için her zaman bir image oluşturduğunuzda bir tag belirlemeniz önerilir. Ayrıca, zaten oluşturulmuş bir image’ı sonradan docker tag
komutuyla tag’leyebilirsiniz.
Bir Desene Uyan Image’ları Kaldırma
Bazen bir grup image’ı bir desene göre bulmak isteyebilirsiniz. Örneğin, belirli bir tag ile oluşturulmuş image’ları temizlemek isteyebilirsiniz. Bu durumda grep
ve awk
kullanarak belirli bir desene uyan image’ları listeleyip kaldırabilirsiniz. Bu araçlar Docker tarafından sağlanmaz, ancak birçok sistemde mevcuttur.
Desene göre listeleme:
docker images -a | grep "pattern"
Bulduğunuz image’ları kaldırmak için:
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Tüm Image’ları Kaldırma
Sistemdeki tüm Docker image’larını listelemek için docker images -a
komutunu kullanabilirsiniz. Eğer tüm image’ları kaldırmak istiyorsanız:
Listele:
docker images -a
Kaldır:
docker rmi $(docker images -a -q)
Docker Container’ları Kaldırma
Belirli Container’ları Kaldırma
Docker container’larını kaldırmadan önce, bu container’ların hangileri olduğunu tespit etmek için docker ps -a
komutunu kullanabilirsiniz. Bu komut, sistemdeki tüm container’ları listeler (durdurulmuş olanlar dahil).
Listele:
docker ps -a
Kaldır:
docker rm Container_ID_or_Name
Çıkış Yapan Container’ları Otomatik Olarak Kaldırma
Bir container’ı başlatırken, eğer container’ın işlevini tamamladıktan sonra saklamak istemiyorsanız, docker run --rm
komutunu kullanarak container çıktığında otomatik olarak kaldırılmasını sağlayabilirsiniz:
docker run --rm Image_Name
Çıkmış Container’ları Kaldırma
Sistemdeki durdurulmuş (exited) container’ları bulmak ve temizlemek için filtreleme yapabilirsiniz. Çıkmış container’ları şu şekilde listeleyebilirsiniz:
Listele:
docker ps -a -f status=exited
Kaldır:
docker rm $(docker ps -a -f status=exited -q)
Docker Volume’leri Kaldırma
Belirli Volume’leri Kaldırma
Docker volume’lerini listelemek için docker volume ls
komutunu kullanabilirsiniz. Kaldırmak istediğiniz volume’lerin adını öğrendikten sonra şu komutla temizleyebilirsiniz:
Listele:
docker volume ls
Kaldır:
docker volume rm volume_name volume_name
Askıda Kalan Volume’leri Kaldırma
Eğer bir container kaldırıldığında volume’ler otomatik olarak kaldırılmazsa, bu volume’ler “askıda kalan” volume’ler olarak adlandırılır. Bu volume’leri temizlemek için şu komutları kullanabilirsiniz:
Listele:
docker volume ls -f dangling=true
Kaldır:
docker volume prune
Tüm Temizlik İçin Kullanılacak Komutlar
Tüm Temizleme Komutları
Aşağıdaki komutlar, Docker ile kullanılmayan tüm kaynakları temizlemek için bir araya getirilmiştir:
- Tüm durdurulmuş container’ları kaldırmak için:
docker container prune
- Tüm kullanılmayan image’ları kaldırmak için:
docker image prune -a
- Tüm kullanılmayan volume’leri kaldırmak için:
docker volume prune
- Tüm kullanılmayan network’leri kaldırmak için:
docker network prune
- Sistem genelinde tüm kullanılmayan kaynakları kaldırmak için:
docker system prune
Not: docker system prune -a
komutunu kullanarak, tüm durdurulmuş container’ları, kullanılmayan network’leri ve tüm image’ları kaldırabilirsiniz. Bu komut disk alanınızı ciddi şekilde boşaltabilir, bu yüzden dikkatli kullanmalısınız.
Sonuç
Bu kılavuz, Docker ile kullanılmayan image’ları, container’ları ve volume’leri temizlemek için sık kullanılan komutları cheat sheet formatında özetlemektedir. Docker, sistem kaynaklarınızı yönetmenizi kolaylaştıran birçok komut sunar. Bu komutlar sayesinde gereksiz dosya ve verileri temizleyebilir, sistem performansınızı artırabilirsiniz. Bu temizlik işlemleri ile Docker ortamınızı her zaman düzenli tutabilirsiniz.