görüntü, durdurulmuş kapsayıcı tarafından kullanılıyor


94

Şu komutla bir docker container silmeye çalışıyorum:

docker rmi <Image-Id>

Açıkçası, Görüntü Kimliğini kullandığım Kimlik ile değiştirdim:

docker images

Ancak aşağıdaki hatayı görüyorum:

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx

Yanıtlar:


122

--force , -fGörüntüyü kaldırmaya zorla da kullanabilirsiniz .

-F işaretini kullanır ve görüntünün kısa veya uzun kimliğini belirtirseniz, bu komut belirtilen kimlikle eşleşen tüm görüntüleri etiketini kaldırır ve kaldırır.

  docker rmi -f <image_id> 

1
Teşekkürler, iyi çalıştı ama bir sorun var. 10 GB'lık bir görüntüyü sildim ancak sildikten sonra boş disk alanımda herhangi bir değişiklik göremiyorum.
Mehrdad Babaki

1
resim eklenmiş ciltleri kaldırdınız mı ve her birinin resim boyutunu kontrol ettiniz mi
Adiii

1
Pek değil, liman işçisinde yeniyim. Aracı deneyeceğim. Bu arada, ses seviyesini algılamak ve kaldırmak için komut satırını kullanabilir miyim?
Mehrdad Babaki

1
evet docker volume ls; hacmi listelemek ve kaldırmak için, docker volume rm v_id
Adiii

40

Durdurulan kapsayıcıyı ile silmeniz gerekir docker rmve ardından birlikte kullandığı görüntüyü silebilirsiniz docker rmi.


3
Bu, herhangi bir tam cevabın parçasıdır. Kaldırmaya zorlayabilir veya durdurulan görüntüyü silebilirsiniz.
bmacnaughton

28

Ayrıca kilide neden olan kapları durdurduğunuzu da görebilirsiniz. Önce şunları kullanarak kaldırın:

docker rm  $(docker ps -q -a)

Burada docker işlemlerini sadece ID'ye göre listeliyoruz ve sonra bunları kaldırıyoruz; ancak docker rm yalnızca durdurulmuş kapsayıcıları kaldırır.

Daha sonra geri dönün ve aşağıdakileri kullanarak görüntüleri kaldırın:

docker image rm <image_id>

22

Önce kapsayıcıyı kaldırmalısınız.
Zorlama, alınacak son yöntemdir.

#check container
docker ps -a

#remove container
docker rm containerID

3
Açıkça en iyi cevap. Durdurulan konteynerlerin listesinin nasıl alınacağını açıklayan tek kişi.
Marco

4

Durumda docker rmi <image-id>işe yaramadı, şunu deneyin:

Çalışan tüm kapsayıcıları durdurun

docker stop $(docker ps -aq)

Tüm kapları çıkarın

docker rm $(docker ps -aq)

Tüm resimleri kaldır

docker rmi $(docker images -q)

3

Diğer yanıtlara ek olarak, Mac için Docker kullanırken aynı sorunu yaşadım ancak docker ps -açalışan herhangi bir kapsayıcı göstermedim. Koşu docker imagesşovları:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Kubernetes'i etkinleştirdiyseniz, bu görüntülerin tümü Docker uygulaması tarafından kullanılır. Mac için Docker tercihlerinde, Kubernetes için bir bölüm vardır. "Sistem kapsayıcılarını göster (gelişmiş)" seçeneğini tıklarsanız, bunlar içinde görünür docker ps.

Bu görüntüleri silmek isterseniz Mac için Docker uygulaması aracılığıyla Kubernetes'i devre dışı bırakmanız ve ardından tekrar denemeniz gerekir.


2

Docker konteynerleri docker imajlarının üzerinde çalışır, bir imajı ancak herhangi bir konteynere iliştirilmemişse silebilirsiniz. Dolayısıyla, konteyneri durdurmanız ve konteyneri kaldırmanız gerekir, ardından görüntü kimliğini kaldırabilirsiniz.

docker, kapsayıcı kimliği ve docker rm kapsayıcı kimliği durdur

Ardından, image docker rmi görüntü kimliğini kaldırmayı deneyin

Aşağıdaki bağlantıda verilen bazı ekstra bilgiler. Şerefe.!

https://docs.docker.com/config/pruning/


Bu, durdurma konteyneri (docker-compose stop) -> konteyneri kaldır (docker rm <konteyner adı>) -> ilişkili imajları kaldır (docker rmi <image_id>) sürecinden sonra doğru cevap olmalıdır.
kta

1

Amaç disk alanını geri kazanmaksa, henüz bahsedilmeyen başka bir yaklaşım kullanmaktır docker system prune. Dikkat edilmesi gereken bir uyarı yazdıracaktır:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Bu, adlandırılmış görüntüleri silmez, ancak adsız ara görüntüleri temizler. Kullandığınız kapların boyutlarına bağlı olarak, bu önemli miktarda disk alanı tasarrufu sağlayabilir.


0

DockerfileDocker compose'da değişiklik yaptıysanız ve kullanıyorsanız docker-compose , --buildseçeneğiyle çalıştırarak görüntünüzü yeniden oluşturabilirsiniz !


Eğer herhangi bir değişiklik yaptıysanız Dockerfilekendinizin bayrağını kullanmak görüntüyü kaldırmak shoudn't --buildile docker-composebu değişikliklerle yeni bir görüntü yeniden yüzden
ans1genie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.