Docker hatası, docker kapsayıcısını silemiyor, çakışma: havuz başvurusu kaldırılamıyor


165

Docker'daki kapsayıcıyı kaldırmak istiyorum, ancak silmek istediğinizde bir hata oluşuyor

Kapsayıcıyı kaldırmadan önceki adımım, mevcut kapsayıcı listesine bakın

sts@Yudi:~/docker$ sudo docker ps -as

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
78479ffeba5c        ubuntu              "/bin/bash"         42 hours ago        Exited (0) 42 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
0bd2b54678c7        training/webapp     "python app.py"     5 days ago          Exited (0) 5 days ago                         backstabbing_ritchie   0 B (virtual 323.7 MB)
0adbc74a3803        training/webapp     "python app.py"     5 days ago          Exited (143) 5 days ago                       drunk_feynman          0 B (virtual 323.7 MB)

bir listeyi silmek istiyorum, yani "eğitim / webapp" ama meydana gelen bir hata

sts@Yudi:~/docker$ sudo docker rmi training/webapp
Error response from daemon: conflict: unable to remove repository reference "training/webapp" (must force) - container 0bd2b54678c7 is using its referenced image 54bb4e8718e8
Error: failed to remove images: [training/webapp]

Konteyner görüntülerde çalışıyor mu?

Lütfen yardım et


Bu bazen başıma geliyor ama olmasına neden olan şeyin desenini anlayamıyorum (her zaman başıma gelmediğinden), ayrıca görüntüyü kaldırmaya zorlarsam, bir sürü başka şeyi de kaldırır. Hatanın nedenini biliyor musunuz? çoğaltabilir misin?
Charlie Parker

Mükemmel son özet Filtre örnekleri, desenler vb.
İle

Yanıtlar:


124

Liman işçisi görüntüleri ve liman işçisi konteynırları arasında bir fark vardır. Bu SO Sorusunu kontrol edin .

Kısacası, bir kap görüntünün çalışan bir örneğidir. bu nedenle, o görüntüden çalışan bir kapsayıcı varsa bir görüntüyü silemezsiniz. İlk önce kapsayıcıyı silmeniz yeterlidir.

docker ps -a               # Lists containers (and tells you which images they are spun from)
docker images              # Lists images  
docker rm <container_id>   # Removes a container

docker rmi <image_id>      # Removes an image 
                           # Will fail if there is a running instance of that image i.e. container

docker rmi -f <image_id>   # Forces removal of image even if it is referenced in multiple repositories, 
                           # i.e. same image id given multiple names/tags 
                           # Will still fail if there is a docker container referencing image

Docker 1.13+ için güncelleme [Ocak 2017'den beri]

Docker 1.13'te, etkileştiği mantıksal nesnenin altında oturup her komutu yeniden gruplandırdık

Temel olarak, yukarıdaki komutlar aşağıdaki gibi daha açık bir şekilde yeniden yazılabilir:

docker container ls -a
docker image ls
docker container rm <container_id>
docker image rm <image_id>

Ayrıca, HER ŞEYİ kaldırmak istiyorsanız şunları kullanabilirsiniz:

docker system prune -a

UYARI! Bu kaldırılacak:

  • durdurulan tüm konteynerler
  • en az bir kapsayıcı tarafından kullanılmayan tüm ağlar
  • kullanılmayan tüm görüntüler
  • hepsi önbellek oluştur

3
docker rmi -f idKaldırmayı "zorlamak" için kullanmak zorunda kaldım .
WernerCD

@WernerCD -f, birden fazla havuzda başvurulan bir görüntüyü kaldırmak istediğinizde yardımcı olur.
Ahmad Abdelghany

1
docker container lssadece çalışan kapları listelediğini belirtmek gerekir . -aBayrak eklemenin hepsini listelediğini anlayana kadar bu benimle uğraştı .
MFB

@MFB İyi bir nokta. İki komut kümesi arasındaki eşliği korumak için komuta bayrak eklendi. Teşekkürler!
Ahmad Abdelghany

hala OSX Docker Desktop v2.2.0.4 (motor 19.03.8) üzerinde çalışıyor
rrrrrraul

83

İlk olarak, kapsayıcı adlarını kaldırın

$ sudo docker rm backstabbing_ritchie

Sonuç

$ sudo docker rm backstabbing_ritchie
  backstabbing_ritchie

silinecek kapta listelenen ikinci kısmı sil

$ sudo docker rm drunk_feynman 
  drunk_feynman

İkincisi, kabı çıkarın

$ sudo docker rmi training/webapp

Sonuç

$ sudo docker rmi training/webapp  
  Untagged: training/webapp:latest
  Deleted: 54bb4e8718e8600d78a5d7c62208c2f13c8caf0e4fe73d2bc0e474e93659c0b5
  Deleted: f74dd040041eb4c032d3025fe38ea85de8075992bdce6789b694a44b20feb8de
  Deleted: 7cbae69141977b99c44dc6957b032ad50c1379124d62b7d7d05ab7329b42348e
  Deleted: abb991a4ed5e4cde2d9964aec4cccbe0015ba9cc9838b696e7a32e1ddf4a49bd
  Deleted: 1952e3bf3d7e8e6a9b1e23bd4142e3c42ff7f4b7925122189704323593fd54ac
  Deleted: f95ebd363bf27a7546deced7a41a4099334e37a3d2901fa3817e62bb1ade183f
  Deleted: 20dd0c75901396d41a7b64d551ff04952084cc3947e66c67bae35759c80da338
  Deleted: 2505b734adda3720799dde5004302f5edb3f2a2ff71438f6488b530b728ba666
  Deleted: 2ee0b8f351f753f78f1178000ae37616eb5bf241d4ef041b612d58e1fd2aefdc
  Deleted: 2ce633e3e9c9bd9e8fe7ade5984d7656ec3fc3994f05a97d5490190ef95bce8d
  Deleted: 98b15185dba7f85308eb0e21196956bba653cf142b36dc08059b3468a01bf35d
  Deleted: 515565c29c940355ec886c992231c6019a6cffa17ff1d2abdfc844867c9080c5
  Deleted: 2880a3395eded9b748c94d27767e1e202f8d7cb06f1e40e18d1b1c77687aef77

Kıtayı kontrol et

  $ sudo docker ps -as
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
  78479ffeba5c        ubuntu              "/bin/bash"         43 hours ago        Exited (0) 43 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)

6
Çok sayıda eski konteyneriniz varsa, docker'ı rm `docker ps -aq`temizleme için birer birer çıkarmak yerine düşünebilirsiniz . Daha fazla bilgi burada
Philiiiiiipp

Görüntüyü silmeden önce adı silmek neden gereklidir? Öncelikle adı silmeden bir görüntüyü silmeye çalışmak neden sorun teşkil etsin?
code_dredd

@code_dredd "Adların silinmesi" diye bir şey yoktur. Bir görüntüyü silmeden önce silinmesi gereken kaptır. Daha fazla ayrıntı için stackoverflow.com/a/40283776/1998422
Ahmad Abdelghany

37

Liman işçisi resimlerini ve kapsayıcılarını temizlemek istiyorsanız

DİKKAT: bu her şeyi temizler

tüm kapları durdur

docker stop $(docker ps -a -q)

tüm kapları çıkar

docker rm $(docker ps -a -q)

tüm resimleri kaldır

docker rmi -f $(docker images -a -q)

İşe yaradı. Ayrıca, kabı durdurursanız, yine de bir listede görürsünüz. Bu nedenle, ile kaldırmanız gerekir docker rm $(docker ps -a -q). Teşekkürler!

28

-fkapsayıcıları silmeye zorlamak için seçeneği kullanabilirsiniz .

sudo docker rmi -f training/webapp

sudo docker stop training/webappSilmeden önce kapları kullanarak durdurabilirsiniz.


1
Ben denedim, konteyner $ sudo docker durdurma eğitim / webapp Daemon hata yanıtı: böyle bir id: eğitim / webapp Hata: kapsayıcılar durdurulamadı: [eğitim / webapp]
Yuday

kapsayıcı kimliği ile durdurmayı deneyebilirsiniz sudo docker stop 0bd2b54678c7
Saril Sudhakaran

23

Birden fazla docker konteyneri başlattıysanız bunu kullanın

$ docker rm $(docker ps -aq)

"Ps -aq" komutunda listelenen tüm mevcut liman işçilerini kaldıracaktır.

Kaynak: aaam üzerinde https://github.com/docker/docker/issues/12487


Bu benim için çalıştı. Bu komutu çalıştırdıktan sonra, daha sonra çalışacaktım docker image lsve docker image rm Xher X'in lsçıktıdan alındığı yer olacaktı .
jftuga

5

Bunun 2 yaşında bir soru olduğunu fark ettim, ancak yine de bu özel soru için geçici çözümümü paylaşmak istiyorum:

Öncelikle, docker container ls -asahip olduğunuz tüm kapları listelemek ve silmek istediğinizi belirlemek için çalıştırın .

İkincisi, komutla olanı silin docker container rm <CONTAINER ID>(Kapsayıcı çalışıyorsa, önce docker container stop <CONTAINER ID>durdurmalısınız, belirtilen kapsayıcıyı düzgün bir şekilde durdurmak için çalıştırmalısınız , nedeni ne olursa olsun durdurmazsa, alternatif olarak çalıştırabilirsiniz docker container kill <CONTAINER ID> to force shutdown of the specified container).

Üçüncü olarak, kabı çalıştırarak çıkarın docker container rm <CONTAINER ID>.

Son olarak, docker image ls -atüm görüntüleri görüntülemek ve çalıştırmak istediğiniz görüntüyü silmek için koşabilirsiniz docker image rm <hash>.


2

Liman işçilerinin resimlerini kaldır>

Tüm kapları listele

docker container ls

Tüm resimleri listele

docker image ls

Kapsayıcıyı kapsayıcı kimliğine göre durdur

docker container stop <container_id>

Kapsayıcıyı kapsayıcı kimliğiyle kaldır

docker container rm <container_id>

Durdurmak ve kaldırmak istemiyorsanız, kaldırmaya zorlayabilirsiniz

docker container rm -f <container_id>

Resmi kaldır

docker image rm <image_id>

Bitti!


2

tüm liman işçiliği resimlerinizi listeleyin:

docker images

var olan tüm liman işçisi konteynırlarını listele:

docker ps -a

silmek istediğiniz görüntüyü kullanan tüm hedeflenen kapsayıcıları silin:

docker rm <container-id>

hedeflenen resmi sil:

docker rmi <image-name:image-tag or image-id>

0

Yalnızca belirli bir görüntüyle ilişkili kapları kaldırın

docker ps -a | grep training/webapp | cut -d ' ' -f 1 | xargs docker rm
  • ps -a: tüm kapları listele
  • grep training / webapp: eğitim / webapp görüntüsünden başlayan kaplar hariç her şeyi filtreleyin
  • cut -d '' -f 1: yalnızca kapsayıcı kimliklerini listeler (boşlukla sınırlandırıldığında ilk alan)
  • xargs docker rm: kapsayıcıyı kaldırmak için kapsayıcı kimliği listesi çıktısını docker rm komutuna gönder
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.