Docker Görüntülerini Kaldırma
Docker görüntülerinin ne olduğunu ve neden kontrol altında tutulmaları gerektiğini anladığınıza göre, şimdi işin uygulama kısmına geçelim.
Docker, elinizdekileri listelemekten ihtiyaç duymadıklarınızı kaldırmaya kadar görüntülerinizi yönetmenize yardımcı olacak birkaç komut sağlar.
Mevcut Docker görüntülerini kontrol etme
Görüntüleri silmeye başlamadan önce, sisteminizde gerçekten neyin yer kapladığını bilmeniz gerekir. docker images komutu, bu temizlik işleminin ilk adımıdır.
docker images
Bu komut, tüm Docker görüntülerinizi ve şu gibi değerli bilgilerle birlikte listeler:
- Depo adı
- Etiket
- Görüntü kimliği
- Oluşturulma tarihi
- Boyut

Görsel 1 - Mevcut Docker görüntüleri
Boyut sütununa bakmak iyi bir farkındalık yaratabilir. Görsel 1’de de görebileceğiniz gibi, Oracle veritabanı görüntüsü 15 GB’tan fazla yer kaplıyor!
En çok yer kaplayanları belirlemek için görüntülerinizi boyuta göre sıralamak isterseniz:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h

Görsel 2 - Docker görüntüleri boyuta göre sıralanmış
Bu, tüm görüntü özelliklerini içermediği için daha kompakt bir görünümdür.
Belirli bir Docker görüntüsünü kaldırma
İhtiyaç duymadığınız görüntüleri belirledikten sonra, docker rmi komutunu kullanarak bunları tek tek kaldırabilirsiniz (rmi “remove image” anlamına gelir).
Bir görüntüyü kimliğiyle veya repository:tag kombinasyonuyla kaldırabilirsiniz:
# Görüntü kimliğine göre kaldır
docker rmi 4e7024df2f20
# Depo:etikete göre kaldır
docker rmi nginx:latest

Görsel 3 - Tekil Docker görüntülerini kaldırmanın iki yolu
Ayrıca şunu da belirtmek gerekir ki, Docker, şu anda konteynerler tarafından kullanılan görüntüleri kaldırmanıza izin vermez. Şuna benzer bir hata mesajı alırsınız:

Görsel 4 - Kullanımda olan Docker görüntülerini kaldırma girişimi
Bunu görürseniz, görüntüyü kaldırmadan önce bağlı konteynerleri durdurup kaldırmanız gerekir veya zorla seçeneğini kullanabilirsiniz (bunu ileride ele alacağım).
Birden fazla Docker görüntüsünü kaldırma
Görüntüleri teker teker kaldırmak yorucu olabilir, özellikle kapsamlı bir temizlikte. Neyse ki Docker, tek bir komutla birden fazla görüntüyü kaldırmanıza izin verir.
Boşlukla ayrılmış bir görüntü kimliği listesi verebilirsiniz:
docker rmi postgres:latest mariadb:latest

Görsel 5 - Birden fazla Docker görüntüsünü kaldırma
Daha gelişmiş senaryolar için, docker images komutunu filtreleme ve pipe kullanımıyla birleştirebilirsiniz. Örneğin, bu komut latest etiketi olan tüm görüntüleri kaldırır:
docker rmi $(docker images --filter=reference="*:latest" -q)

Görsel 6 - Belirli bir etikete sahip tüm Docker görüntülerini kaldırma
Tabii, çalışan konteynerler tarafından kullanılan görüntüler hariç.
Bu toplu kaldırma komutlarında dikkatli olun, zira onay sormazlar. Enter’a basmadan önce filtre kriterlerinizi mutlaka iki kez kontrol edin.
Sarkan ve kullanılmayan görüntüleri kaldırma
Bir görüntüyü yeniden inşa ettiğinizde, Docker değişen her şey için yeni katmanlar oluşturur ve değişmeyen kısımlar için önbelleğe alınmış katmanları yeniden kullanır. Önceki sürüme ait benzersiz katmanlar “sarkan” hale gelir — diskte bulunurlar ancak herhangi bir adlandırılmış görüntünün parçası değildirler.
Sarkan görüntüleri şu komutla tespit edebilirsiniz:
docker images -f "dangling=true"

Görsel 7 - Sarkan Docker görüntülerini listeleme
Şimdi, hepsini bir kerede kaldırmak için prune komutunu çalıştırın:
docker image prune

Görsel 8 - Docker görüntü temizliği (prune)
Bu komut, devam etmeden önce onay ister. Hepsini kaldırmak istediğinizden eminseniz:
docker image prune -f
Daha agresif bir temizlik için, hem sarkan görüntüleri hem de kullanılmayan görüntüleri (hiçbir konteyner tarafından kullanılmayanlar) kaldırabilirsiniz:
docker image prune -a

Görsel 9 - Tüm kullanılmayan görüntüleri kaldırma
Bu son komut önemli miktarda alan açabilir, ancak dikkatli kullanın; çünkü çalışan veya durdurulmuş konteynerler tarafından referans verilmeyen tüm görüntüleri kaldırır.
>Docker Prune komutu tam olarak nedir? Bu konuya adanmış, örneklerle dolu bir makalemiz var.
Artık Docker görüntülerini nasıl kaldıracağınızı bildiğinize göre, karşılaşabileceğiniz yaygın hatalara ve bunlarla nasıl başa çıkılacağına bakalım.
Docker Görüntülerini Kaldırırken Hataları Yönetme
Yazılım geliştirmede her şeyde olduğu gibi, Docker görüntülerini kaldırmaya çalışırken bazen hatalarla karşılaşabilirsiniz.
Bu hataların çoğu iyi nedenlerle ortaya çıkar — Docker’ın koruma önlemleri, önemli bir şeyi yanlışlıkla bozmanızı engellemek için tasarlanmıştır. Bu yaygın hataları ve nasıl ele alacağınızı inceleyelim.
Hata: Görüntü bir konteyner tarafından kullanılıyor
Docker görüntülerini kaldırırken en sık karşılaşacağınız hata aşağıdakine benzer olacaktır:
Error response from daemon: conflict: unable to delete 64ba095c0f0e (cannot be forced) - image is being used by running container 0284660ca006
Bu durum, Docker mimarisinde konteynerler ve görüntüler arasında katı bir bağımlılık ilişkisi olduğu için ortaya çıkar. Bir konteyner, görüntünün üzerinde kendi yazılabilir katmanına sahip çalışan bir örneğidir.
Docker neden silmeyi engeller? Basit — hâlâ çalışan bir konteynerin dayandığı görüntüyü silerseniz, o konteyner anında çöker. Durdurulmuş konteynerler bile, daha sonra yeniden başlatılabilecekleri için ana görüntülerine referanslarını korur.
Bu tür bir görüntüyü kaldırmak için önce, görüntüyü kullanan tüm konteynerleri (durdurulmuş olanlar dahil) listeleyerek başlayın:
docker ps -a --filter ancestor=64ba095c0f0e

Görsel 10 - Görüntüyü kullanan tüm konteynerler
Ardından tüm konteynerleri durdurabilirsiniz:
docker stop 0284660ca006

Görsel 11 - Konteynerleri durdurma
Sırada, durdurulan konteynerleri kaldırabilirsiniz:
docker rm 0284660ca006

Görsel 12 - Konteynerleri kaldırma
Ve son olarak, bilinen rmi komutunu kullanarak görüntüyü kaldırın:
docker rmi 64ba095c0f0e

Görsel 13 - Docker görüntüsünü kaldırma
Ya da tek bir kabuk komutunu tercih ediyorsanız bunu kullanın:
docker ps -a --filter ancestor=090040f97aa1 -q | xargs docker rm -f && docker rmi 090040f97aa1

Görsel 14 - Her şeyi tek bir kabuk komutunda yapmak
Çok daha kolay, değil mi?
Docker görüntülerini zorla kaldırma
Bağımlılıklardan bağımsız olarak bir görüntüyü kaldırmak istediğinizden tamamen eminseniz, Docker -f veya --force bayrağını sunar:
docker rmi -f 64ba095c0f0e

Görsel 15 - Docker görüntülerini zorla silme
Zorla seçeneği, görüntü konteynerler veya diğer görüntüler tarafından referans verilmiş olsa bile Docker’a kaldırmasını söyler.
Ancak, çalışan konteynerler tarafından referans verilen görüntüleri kaldırmaz.
Zorla kaldırma, Docker’ın kendisini hata ayıklarken veya bağımlılıkların güvenle koparılabileceğinden tamamen emin olduğunuzda başvuracağınız son çare olmalıdır. Üretim ortamlarında neredeyse hiç doğru seçim değildir.
Unutmayın, Docker’ın bağımlılık kontrolleri bir sebeple vardır. Onlarla uyum içinde çalışmak, daha kararlı ve öngörülebilir bir Docker deneyimi sağlar.
Docker Görüntülerini Yönetmek için En İyi Uygulamalar
Docker görüntülerini yönetmek tek seferlik bir iş değildir — sürekli bir sorumluluktur.
İyi alışkanlıklar edinmek ve en iyi uygulamaları takip etmek, disk alanınız aniden sıfıra düştüğünde acil temizliklerden sizi kurtarır. Bu bölümde, temiz bir Docker ortamı sürdürmenize yardımcı olacak bazı stratejileri anlatacağım.
>Docker’ı öğrenmek için kapsamlı bir kılavuz mu arıyorsunuz? Veri profesyonelleri için rehberimiz iyi bir başlangıç noktasıdır.
Düzenli temizlik
Bulaşıkları haftalarca lavaboda biriktirmeyeceğiniz gibi, kullanılmayan Docker görüntülerinin de sisteminizde süresiz birikmesine izin vermemelisiniz.
Düzenli bir bakım takvimi, şişkinliği önlemenin en basit yoludur. Docker’ı ne kadar aktif kullandığınıza bağlı olarak bu haftalık, aylık veya üç aylık olabilir.
Bu temizlik seanslarında şunları yapmalısınız:
docker imagesile görüntüleri gözden geçirip kaldırılacak adayları belirleyin.- Tanımadığınız veya son zamanlarda kullanmadığınız görüntüleri kontrol edin.
- Aynı uygulamanın yinelenen sürümlerini arayın.
- Önceden ele aldığımız komutları kullanarak gereksiz görüntüleri kaldırın.
Birçok geliştirme ekibi, görüntü temizliğini CI/CD hatlarına da entegre eder. Örneğin Jenkins veya GitHub Actions'ı, belirli bir yaştan eski inşa görüntülerini otomatik olarak temizleyecek şekilde yapılandırabilirsiniz.
Bu komut yalnızca 30 günden daha eski olan görüntüleri gösterir:
docker images --format "{{.ID}}\t{{.CreatedAt}}" | awk '$2 < "'$(date -d '30 days ago' +'%Y-%m-%d')'"' | cut -f1
Docker görüntü temizliğini (pruning) kullanma
Docker, manuel temizlik işinin büyük kısmını otomatikleştirebilen yerleşik temizleme komutları sağlar.
docker system prune komutu, tek seferde tüm durdurulmuş konteynerleri, sarkan görüntüleri ve kullanılmayan ağları kaldırır:
docker system prune
Kullanılmayan görüntüleri de kaldıran daha agresif bir temizlik için:
docker system prune -a
Hatta inşa önbelleklerinden alan geri kazanabilirsiniz:
docker builder prune
Bu komutlar betik yazımı için idealdir. İşte periyodik olarak çalıştırabileceğiniz basit bir temizlik betiği örneği:
#!/bin/bash
# Tüm konteynerleri durdur
docker stop $(docker ps -q)
# Tüm durdurulmuş konteynerleri kaldır
docker container prune -f
# Tüm kullanılmayan görüntüleri kaldır
docker image prune -a -f
# Kalan disk kullanımını göster
docker system df

Görsel 16 - Docker temizliği için otomatik betik
Otomatik betiklerde -f bayrağını dikkatli kullanmayı unutmayın; çünkü onay istemlerini atlar.
Görüntü sürümlerini düzenli tutma
İyi bir etiketleme stratejisi, gereksiz Docker görüntülerinin birikmesini en aza indirmenize yardımcı olur.
latest etiketini her zaman kullanmak (zamanla belirsizleşebilir) yerine şu yaklaşımları düşünün:
- Görüntüleriniz için semantik sürümleme kullanın:
myapp:1.0.0
myapp:1.0.1
myapp:1.1.0
- Etiketlere build bilgisi ekleyin:
myapp:build-2025-04-06
myapp:commit-a7f3d9e
- Ortam veya amaç niteleyicileri ekleyin:
myapp:1.0.0-dev
myapp:1.0.0-test
myapp:1.0.0-prod
Daha büyük ekipler için, belirli bir sürenin ardından eski görüntüleri otomatik olarak çöp toplayan bir Docker görüntü kayıt politikası uygulamayı düşünün. Hem Docker Hub hem de Harbor gibi özel kayıtlar, görüntü yaşam döngülerini yönetmeye yönelik özellikler sunar.
Bu en iyi uygulamaları — düzenli temizlik, otomatik pruning ve düzenli etiketleme — birleştirerek çok daha sağlıklı bir Docker ortamı sürdürecek ve o meşhur “aygıtta yer kalmadı” hatalarından kaçınacaksınız.
Docker Görüntüsü Kaldırmayı Özetleyelim
Konteynerlerle çalışan bir geliştiriciyseniz, doğru Docker görüntü yönetimi sahip olunması gereken bir beceridir.
Docker’ın gücünün, uygulamaları verimli şekilde izole edip paketleyebilmesinden geldiğini unutmayın; ancak uygun bakım olmadan bu avantaj hızla dezavantaja dönüşebilir.
Docker görüntülerinin zamanla neden sorunlu hale gelebileceğini, değerli disk alanını tüketip geliştirme ortamınızda dağınıklık yaratabileceğini öğrendiniz. docker rmi ile belirli görüntüleri hedeflemekten, pruning komutlarıyla toplu temizliğe kadar görüntüleri kontrol etme ve kaldırma komutlarını gördünüz. Ayrıca kaldırma sürecindeki yaygın hataları ve bunların üstesinden gelmeyi de öğrendiniz.
Docker ve konteynerleştirme hakkında daha fazla bilgi edinmek istiyorsanız, bu kurslar bir sonraki durağınız olmalı:
SSS
Silinen bir Docker görüntüsünü geri getirebilir miyim?
Hayır, docker rmi ile bir Docker görüntüsünü sildikten sonra, bir yedeğiniz yoksa veya bir kayıttan yeniden çekemiyorsanız kurtarılamaz. Özellikle üretim ortamlarında doğru görüntüleri sildiğinizden emin olun. Yerelde oluşturduğunuz görüntüler için, bunları Dockerfile’dan yeniden oluşturmanız gerekebilir.
Sarkan Docker görüntüleri nedir ve nasıl kaldırılır?
Sarkan görüntüler, herhangi bir etiketli görüntüye ait olmayan katmanlardır; genellikle görüntüleri birden çok kez yeniden inşa ettiğinizde oluşurlar. docker images -f "dangling=true" ile tespit edip docker image prune ile hepsini bir kerede kaldırabilirsiniz.
Docker’dan hızlıca nasıl alan açabilirim?
Alanı en hızlı şekilde geri kazanmanın yolu docker system prune -a kullanmaktır; bu komut, tüm durdurulmuş konteynerleri, kullanılmayan ağları, sarkan görüntüleri ve kullanılmayan görüntüleri kaldırır. Dikkatli olun; çünkü hiçbir konteyner tarafından kullanılmayan tüm görüntüleri siler.
Docker görüntülerimi ne sıklıkla temizlemeliyim?
Sıklık, Docker’ı ne kadar aktif kullandığınıza bağlıdır. Sık görüntü inşalarının olduğu geliştirme ortamları için haftalık temizlik önerilir. Daha az aktif sistemlerde aylık veya üç aylık bakım yeterlidir. Tutarlılık için otomatik temizlik betikleri kurmayı düşünün.
Docker görüntülerini kaldırmakla pruning arasındaki fark nedir?
Kaldırma, seçtiğiniz belirli görüntüleri hedeflerken; pruning, belirli kriterlere göre tüm kullanılmayan veya sarkan görüntüleri otomatik olarak temizler.


Docker kullanıyor ve sık sık disk alanınızın tükendiğini mi görüyorsunuz? Yalnız değilsiniz.
Docker görüntüleri, Docker konteynerlerinin yapı taşlarıdır ancak hızla birikerek disk alanını tüketebilirler. Bu görüntüler birkaç megabayttan birkaç gigabayta kadar değişebilir, bu nedenle düzenli bir temizlik prosedürü, sistem performansı için kritik öneme sahiptir.
İşin güzel yanı şu ki Docker, gereksiz görüntüleri kaldırıp disk alanını geri kazanmanıza yardımcı olacak birkaç komut sunar. Bu komutları ve ne zaman kullanılacaklarını anlamak, umarız tüm depolama uyarılarını ortadan kaldıracaktır.
Bu eğitimde, Docker görüntülerini kaldırmanın farklı yollarını gösterecek, kaldırma işlemi sırasında yaygın hataları nasıl ele alacağınızı anlatacak ve temiz bir Docker ortamı için en iyi uygulamaları paylaşacağım.
>Docker’a tamamen yeni misiniz? Bu pratik konteyner rehberi sizi kısa sürede çalışır hale getirecek.
Docker Görüntüsü Nedir?
Docker görüntüsü, bir uygulamayı çalıştırmak için gereken her şeyi içeren hafif, bağımsız ve yürütülebilir bir yazılım paketidir: kod, çalışma zamanı, kütüphaneler, ortam değişkenleri ve yapılandırma dosyaları.
Bunu, konteyner oluşturmak için kullanılan bir anlık görüntü veya şablon olarak düşünün.
>Docker sadece Yazılım Mühendisleri tarafından kullanılmıyor - Veri Bilimcileri de çok seviyor!
Docker görüntüleri katmanlar halinde inşa edilir ve her katman dosya sistemine yapılan bir dizi değişikliği temsil eder. Docker Hub'dan bir görüntü çektiğinizde veya bir
Dockerfilekullanarak bir görüntü oluşturduğunuzda, aslında birlikte çalışan bu katmanlardan oluşan bir yığını indirir veya yaratırsınız. Bu katmanlar önbelleğe alınır; bu da görüntü oluşturmayı ve paylaşmayı daha verimli kılar, ancak makinenizde depolama alanı tüketecekleri anlamına da gelir.Görüntüler, uygulamaları aktif olarak geliştirirken özellikle sorunlu hale gelir. Genellikle küçük değişikliklerle görüntüleri tekrar tekrar yeniden inşa eder, test için çeşitli sürümler oluşturur ve otomatik olarak temizlenmeyebilecek bağımlılıkları çekersiniz.
Farkına bile varmadan, onlarca hatta yüzlerce görüntü, değerli ve sınırlı SSD alanınızı gigabaytlarca tüketir.
>Veri Bilimi ve Makine Öğrenimi ile ilgileniyorsanız, bu 12 Docker görüntüsünü mutlaka bilin.
Docker görüntülerini neden kaldırmalısınız?
Basitçe söylemek gerekirse, Docker görüntüleri alan canavarları olabilir ve ayırabileceğiniz disk alanı sınırlıdır.
Gereksiz Docker görüntülerini kaldırmanın birkaç önemli amacı vardır:
latestetiketiniz beklenmedik bir şeyi işaret ettiği için yanlışlıkla eski bir görüntüyü kullanmaktan daha kötü bir şey yoktur.docker imagesçalıştırdığınızda depo, etiket ve kimliklerle dolu bir ekran görürseniz, aradığınız belirli görüntüyü bulmak zaman alır. Düzenli temizlik, çalışma ortamınızı yönetilebilir ve komut çıktılarınızı okunabilir tutar. Zamanla biriken küçük bir yaşam kalitesi iyileştirmesidir.Sırada, Docker görüntülerini kaldırmaya birkaç farklı yaklaşımla nasıl başlayabileceğinizi göstereceğim.