Docker Görüntülerini, Birimlerini ve Kapsayıcılarını Saniyeler İçinde Kaldırın
Yayınlanan: 2023-03-03Docker, geliştiricilerin masaüstünden buluta kadar farklı platformlarda uygulamalar oluşturmasına ve devreye almasına yardımcı olan bir yazılım konteynerleştirme teknolojisidir.
Bir Docker kapsayıcısı içinde bir uygulama oluşturmak için gereken kaynak kodun, bağımlılıkların ve araçların anlık görüntüsü veya planı, görüntü olarak bilinir. Kalıcı veriler gerektiren Docker uygulamaları, temel alınan işletim sisteminden bağımsız olan ve birimler adı verilen depolamaya güvenebilir.
Docker kullanırken görüntülerin, birimlerin ve kapsayıcıların etkili bir şekilde düzenlenmesi önemlidir. Bu varlıkların kullanılmayan enkarnasyonları birikerek değerli disk alanı kaplayabilir ve sonunda sistem performansını etkileyebilir.
Bu makale, görüntüleri (hem tek tek hem de hepsini birden), birimleri ve kapsayıcıları temizleyerek sistem organizasyonunu sürdürmenin farklı yollarını araştırıyor. Ve bu görevleri hızlı bir şekilde tamamlamak için docker
komut satırı arayüzünü (CLI) kullanacağız.
Docker Görüntüleri Nasıl Kaldırılır
Eski veya gereksiz görüntülerin Docker'dan kaldırılması, sistemin temiz ve düzenli olması için çok önemlidir. CLI'nin belirli görüntüleri kaldırmak için nasıl hedefleyebildiğine bakalım.
Öncelikle docker image ls
komutu ile bir Docker ortamındaki görsellere bakalım:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Yukarıdaki resimlerin listelenmesi, her ikisi de en son olarak etiketlenmiş, my_image ve demo adlı resimleri ortaya çıkardı. Üçüncü görüntünün adı veya etiketi yoktur. Bu durumda, "sallanan" bir görüntüdür: şu anda bir kapsayıcı tarafından kullanılmayan bir görüntü. Bu sarkan resim, resmim (yaygın bir senaryo) dosyasının yeniden oluşturulmasından kaynaklanmıştır. Görüntünün önceki sürümü hala dosya sistemindedir, ancak şu anda kullanımda değildir.
Listede ayrıca her görüntünün 64 karakterlik kimliğinin ilk 12 karakteri, oluşturulma tarihleri ve görüntülerin tükettiği depolama alanı da görüntülenir.
Kullanılmayan Tüm Resimleri Kaldır
Yukarıdaki listeleme örneğinde, sarkan bir görüntümüz var. Ancak isimsiz veya etiketsiz bir görselin aktif olması mümkündür. Örneğin, kimliğine atıfta bulunarak bir kapsayıcı başlatmak için kullanılmış olabilir.
Gerçekten sarkan tüm görüntüleri güvenli bir şekilde silmek için docker image prune
komutunu kullanabilirsiniz:
$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB
Çalışmamızın sonuçlarını görmek için görsellerimizi tekrar listeleyeceğiz:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Budama işleminden sonra isimsiz ve etiketsiz görüntü kayboldu.
İsme Göre Belirli Bir Görüntüyü Kaldırma
Bir resmi, adına atıfta bulunarak kaldırılması için hedefleyebilirsiniz:
$ docker image rm <image_name>
Not: Hâlâ kullanımda olan görüntüleri kolayca kaldıramazsınız. Görüntüleri kullanan çalışan kapsayıcıları durdurmalı veya kaldırmalısınız. Genellikle tavsiye edilmese de, -f
bayrağını kullanarak aktif bir resmin kaldırılmasını zorlayabilirsiniz:
$ docker image rm <image_name> -f
Görüntüleri Kaldırmak İçin rmi Kısaltmasını Kullanma
Docker CLI, rmi
takma adındaki görüntüleri kaldırmak için kestirme bir yaklaşıma sahiptir. Bir görüntüyü ada göre kaldırmak için kullanmak şuna benzer:
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Aşağıdaki görüntü kaldırma örnekleri için rmi
kullanacağız.
Etiketlenmemiş Tüm Resimleri Kaldır
Etiketlenmemiş görüntüler değerli disk alanını işgal etmeye devam eder ve bu da sisteminizi zamanla daha da yavaşlatır.
Docker'daki tüm etiketlenmemiş görüntüleri ortadan kaldırmak için docker rmi
komutunu bir filtreyle kullanın. -f
seçeneğini kullanarak belirli ölçütlere dayalı filtreler sağlayabilirsiniz (bir eylemi zorlamak için image rm
bulunan -f
bayrağıyla karıştırılmamalıdır).
dangling=true
filtresi, etiketlenmemiş görüntüleri tanımlamak için kullanılır:
$ docker rmi $(docker images -f "dangling=true" -q)
Yukarıdaki komuttaki -q
seçeneği, etiketlenmemiş tüm görüntülerin görüntü kimliklerini görüntüler. Tüm bu kimlikler daha sonra bunları kaldırmak için docker rmi
argüman olarak iletilir.
Bu filtre "sallanan" anahtar kelimesini kullanır, ancak yukarıda belirtildiği gibi, etiketsiz bazı resimler gerçekten aktif olabilir. Bu filtre tarafından seçilen bir görüntü gerçekten sallanmıyorsa uyarılırsınız.
Kimliğe Göre Belirli Bir Resmi Kaldırma
Kimliğine başvurarak herhangi bir belirli görüntüyü kaldırmak için docker rmi
komutunu kullanabilirsiniz:
$ docker rmi <image_id>
Ad ve Etikete Göre Belirli Bir Görüntüyü Kaldırma
docker rmi
komutunu kullanarak belirli bir görüntüyü, adı ve etiketiyle birlikte silebilirsiniz.
Örneğin, aynı ada ancak farklı etiketlere sahip birden çok resminiz varsa, bu biçimi kullanarak belirli bir resmi silebilirsiniz:
$ docker rmi <image_name>:<tag>
Bu yöntem, bir havuzla ilgili tüm görüntüleri silmek yerine görüntünün belirli bir sürümünü silmek istediğinizde kullanışlıdır.
En Son Etikete Sahip Tüm Resimleri Kaldır
Docker'da "en son" etiketi, belirli bir Docker görüntüsünün en son sürümünü ifade eder. En son etiket genellikle Docker görüntüleri için varsayılan etiket olarak kullanılır. Açıkça başka bir etiket belirtilmedikçe, bir görüntünün en son yapısına otomatik olarak atanır.
Docker, "en son" etiketine sahip tüm görüntüleri kaldırmak için bir komut sağlar:
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
Yukarıdaki komut 2 bölüme ayrılmıştır. Önce görüntü kimliklerinin listesini alır ve ardından bu listeyi docker rmi
komutuna argüman olarak iletir.
Uzak Bir Depodan Görüntüleri Kaldırma
Docker Hub gibi uzak bir havuzdan bir görüntüyü kaldırmak için önce Docker CLI'yi kullanarak hesapta oturum açmanız gerekir.
Oturum açtıktan sonra, görüntüyü kaldırmak için docker rmi
komutunu kullanmanız yeterlidir. docker rmi
komutu hem yerel hem de uzak görüntüleri kaldırabilir:
docker rmi my_repo/my_image_tag
Özellikle, yalnızca depoya aktarılan görüntüleri kaldırabilirsiniz. Aynı şekilde, çalışan container'lar tarafından kullanılan görüntüleri kaldıramazsınız.
Uzak Bir Depodan Birden Fazla Görüntü Kaldırma
Uzak bir havuzdan birden çok görüntüyü kaldırmak için, docker rmi
komutunu ve ardından görüntü kimliklerini veya etiketlerini kullanabilirsiniz. Örneğin:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Bu, image_tag_1
, image_tag_2
ve image_tag_3
etiketlerine sahip üç resmi my_repo
deposundan kaldıracaktır.
Docker Birimlerini Kaldırma
Docker birimleri, özellikle büyük miktarda veri veya birden çok yedekleme içeriyorsa, çok fazla disk alanı kaplayabilir. Artık ihtiyaç duyulmayan birimleri kaldırarak veri ihlali riskini azaltır ve hassas verilerin yetkisiz kullanıcılar tarafından erişilebilir olmamasını sağlarsınız. Birimlerin düzenli olarak kaldırılması, Docker ortamını da güncel tutabilir ve güncel olmayan verilerin neden olduğu sorunları önleyebilir.
Bu komutlar, bir birimde depolanan tüm verileri kalıcı olarak yok eder, bu nedenle bunları dikkatli kullanın.
Kullanılmayan Tüm Birimleri Kaldır
Docker'da kullanılmayan birimleri kaldırmak, görüntüleri veya kapsayıcıları kaldırmak kadar önemlidir.
Disk depolama alanını boşaltmak için docker volume prune
komutunu kullanabilirsiniz.
İsme Göre Belirli Bir Birimi Kaldırma
Docker'da belirli bir birimi kaldırmak, kullanılmayan birimleri kaldırmak için kullanışlıdır. İşte bir birimi kaldırma komutu:
docker volume rm my_volume_name
Yukarıdaki komutla, my_volume_name birimi kaldırılacaktır. Kullanılmış bir birimi kaldırmaya çalışırsanız Docker bir hata üretir. docker volume ls
komutunu kullanarak kullanılabilir birimleri kontrol edebilirsiniz.
Docker Konteynerlerini Kaldırma
Docker ile daha fazla çalıştıkça, disk kaynaklarını işgal eden birçok kullanılmayan kapsayıcı biriktirebilirsiniz. Bunları silmezseniz, zamanla birikebilir ve değerli disk kaynaklarını alarak sisteminizi yavaşlatabilir ve potansiyel olarak sizi riske atabilir.
Durdurulan Tüm Kapsayıcıları Kaldır
docker container prune
komutu, Docker'daki tüm durdurulan kapsayıcıları silebilir. Burada komut, kaldırılacak olan tüm durdurulmuş konteynerlerin bir listesini oluşturur ve devam etmeden önce onay ister. Bu, disk alanını geri kazanmanıza ve temiz ve düzenli bir Docker ortamını korumanıza yardımcı olurken, önemli hiçbir şeyi kaybetmediğinizi iki kez kontrol etmenize olanak tanır:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
Bu komutla yalnızca durdurulan kapların kaldırılabileceğini unutmayın. Çalışan kapsayıcıları kaldırmanız gerekirse, önce bunları durdurmanız veya farklı bir komut kullanmanız gerekir.
Kimliğe Göre Belirli Bir Kapsayıcıyı Kaldırma
Docker'da, kap kimliğiyle birlikte docker rm command
kullanarak belirli bir kapsayıcıyı kimliğe göre kaldırabilirsiniz. İlk olarak, docker ps command
kullanarak tüm konteyner kimliğini alın:
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
Yukarıdaki komut, yalnızca kapsayıcı durdurulmuş durumdaysa çalışır. Kapsayıcı çalışıyorsa, -f bayrağını kullanarak onu zorla kaldırmanız gerekir:
$ docker rm -f 1ce3cdeb4035
İsme Göre Belirli Bir Kapsayıcıyı Kaldırma
Docker, her iki kapsayıcıyı da ada ve kimliğe göre kaldırmak için çok amaçlı bir docker rm
komutu sağlar.
Örneğin, web_server adlı bir kapsayıcınız varsa, onu aşağıdaki komutu kullanarak kaldırabilirsiniz:
$ docker rm web_server
İlk olarak, kabı durdurmak önemlidir. Docker, belirli bir kapsayıcıyı durdurmak için docker stop
komutunu sağlar.
Çalışan Tüm Kapsayıcıları Kaldır
Çalışan tüm kapsayıcıları silmek için docker rm
komutunu kullanabilirsiniz:
$ docker rm $(docker ps -q)
docker ps -q
kullanmak, çalışan kapsayıcıların kimliklerini listeler. Bundan sonra kimlikler, tüm kapsayıcıları kaldıran docker rm
komutuna iletilir.
Bu komutun yalnızca çalışan kapları kaldıracağını unutmayın. Durdurulanlar da dahil olmak üzere tüm kapları kaldırmak istiyorsanız, bunun yerine aşağıdaki komutu kullanabilirsiniz:
$ docker rm $(docker ps -a -q)
Özet
Bu makalede, Docker görüntülerinin, birimlerinin ve kapsayıcılarının nasıl kaldırılacağı açıklanmaktadır. Temiz ve düzenli bir sistemi sürdürmek için çeşitli yöntemler öğrendiniz. Kimliğe veya ada göre kullanılmayan, etiketlenmemiş veya belirli resimlerin kaldırılmasına yönelik komutları kapsıyordu. Ayrıca durdurulan tüm kapları veya belirli bir kapsayıcıyı kimliğe veya ada göre silme komutlarını da öğrendiniz.
Docker görüntülerini, birimlerini ve kapsayıcılarını kaldırmak, kullanılmayan bileşenleri yönetmenize, değerli disk alanını geri kazanmanıza ve genellikle sistem performansını iyileştirmenize yardımcı olabilecek basit bir işlemdir.
Geliştiricileri Docker'a çeken bu basitliktir ve Docker'da geliştirilen bir uygulamayı dağıtmanın Kinsta'nın Uygulama Barındırma platformundan daha basit bir yolu yoktur. Şimdi ücretsiz olarak deneyebilirsiniz.