Docker Images, Containers ve Volumes Nasıl Silinir?

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:

  1. Tüm durdurulmuş container’ları kaldırmak için:
docker container prune
  1. Tüm kullanılmayan image’ları kaldırmak için:
docker image prune -a
  1. Tüm kullanılmayan volume’leri kaldırmak için:
docker volume prune
  1. Tüm kullanılmayan network’leri kaldırmak için:
docker network prune
  1. 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.

Önceki Konu

Elasticsearch Kurulumu ve Kullanımı

Sonraki Konu

Apache Kafka Kurulumu

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨