root@server:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 5e2dfc857e73 5 days ago 261.6 MB
<none> <none> d053e988f23d 5 days ago 261.6 MB
<none> <none> 1d5d4a2d89eb 5 days ago 261.6 MB
<none> <none> ea0d189fdb19 5 days ago 100.5 MB
<none> <none> 26c6175962b3 5 days ago 100.5 MB
<none> <none> 73d5cec4a0b3 5 days ago 100.5 MB
<none> <none> e19590e1bac1 5 days ago 100.5 MB
Saya sudah mencoba yang berikut ini:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
Dan berikut ini:
docker rmi $(docker images -f "dangling=true" -q)
Dapatkan kesalahan berikut:
docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
docker rmi $(docker images | grep "<none>" | awk "{print $3}")
docker rmi $(docker images -f dangling=true -q)
docker images
:)Jawaban:
Anda dapat mencoba dan mencantumkan hanya gambar yang tidak diberi tag (gambar tanpa label, atau dengan label tanpa tag):
Namun, beberapa dari gambar yang tidak diberi tag itu mungkin dibutuhkan oleh orang lain.
Saya lebih suka menghapus hanya gambar yang menjuntai :
Seperti yang saya sebutkan untuk untuk buruh pelabuhan 1.13+ pada September 2016 di " Cara menghapus gambar Docker lama dan tidak terpakai ", Anda juga dapat melakukan
image prune
perintah :Karena itu, Janaka Bandara menyebutkan dalam komentarnya :
Janaka merujuk pada " Bagaimana Menghapus Gambar Bertanda Tangan dengan Tag " dari Paul V. Novarese :
Perhatikan bahwa Paul juga menyebutkan masalah moby 18892 :
sumber
<none>
gambar bertanda untuk saya (mis.foo/bar:<none>
); Saya harus menggunakandocker images --digests
dandocker rmi foo/bar@<digest>
seperti yang dijelaskan di success.docker.com/KBase/…sudo docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] [flags] Remove one or more images
hutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
Anda dapat mencobanya dengan mudah
sumber
--force
di akhir. Jadi perintahnya akan terlihat seperti-docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
pemangkasan gambar buruh pelabuhan menghapus semua gambar yang menjuntai (yang tidak memiliki tag). buruh pelabuhan pemangkasan gambar -a juga akan menghapus semua gambar yang tidak memiliki wadah yang menggunakannya.
Perbedaan antara gambar yang menggantung dan tidak digunakan dijelaskan di utas stackoverflow ini .
sumber
Kamu boleh pergi
docker rmi $(docker images -f "dangling=true" -q)
. Lihat dokumentasi gambar untuk opsi lebih lanjut.sumber
Menurut dokumentasi buruh pelabuhan Anda hanya dapat mencantumkan gambar yang tidak diberi tag (menggantung) dengan
dan mengarahkan mereka ke
docker rmi
perintah seperti itu:Perhatikan
-q
param thats hanya menampilkan ID numerik kontainer.sumber
Anda dapat menggunakan
--force
untuk tidak meminta konfirmasisumber
Jalankan saja perintah ini:
sumber
Saya telah menemukan yang
docker image prune -f
paling berguna dan saya menggunakannya sepanjang waktu selama saya bekerja sehari-hari, menggunakan tag-f
tidak akan meminta konfirmasi. Lebih lengkapnya di sinisumber
Hapus gambar yang memiliki
none
nama repositori menggunakan yang berikut ini:Hapus gambar yang memiliki
none
tag atau nama repositori:sumber
sumber
docker system prune
akan melakukan trik, itu menghapusTapi gunakanlah, dengan hati-hati!
sumber
Untuk menghapus semua gambar dengan
none
kami harus yakin bahwa kami menghapus semua kontainer yang dihentikan yang dapat mereka gunakan berjalan:maka kami dapat menghapus semua gambar:
sumber
Untuk menghilangkan gambar yang menjuntai silahkan gunakan:
Silakan lihat jawaban saya di sini untuk penjelasan yang lebih rinci: https://unix.stackexchange.com/a/445664/292327
sumber
Perintah di bawah ini berfungsi untuk saya. ini hanya gambar grep "" sederhana dan dapatkan id gambar buruh pelabuhan dan hapus semua gambar. Perintah tunggal sederhana karena harus.
docker rmi $(docker images |grep "<none>"| awk '{print $3}')
sumber
Ini adalah perpanjangan dari jawaban tansadio:
Jika Anda mendapatkan kesalahan berikut:
Anda bisa memaksanya dengan
--force
:sumber
Mengikuti akan menghapus semua
<none>
gambarAnda dapat memaksa penghapusan dengan mengubah
docker rmi
kedocker rmi -f
meskipun saya tidak menyarankan melakukan itu.Beberapa
<none>
gambar bisa saja terkait dengan gambar lain jadi untuk amannya jangan gunakan-f
tag.sumber
Sederhana dan jelas,
Bahkan saya membutuhkan waktu 3 hari untuk memahami kesalahan sederhana dan jelas ini.
Gambar buruh pelabuhan tidak berhasil dibuat
Kemudian saya menghapus baris ke-8 dari Dockerfile, kali ini sinyal berhasil.
Dikatakan berhasil menandai dem: expo, baris ini adalah imp selama proses buruh pelabuhan.
sumber
buruh pelabuhan rmi -f $ (gambar buruh pelabuhan -a | awk 'NR> 1 && $ 2 == "" {print $ 3}')
sumber
Semua
Berbagi perintah PowerShell untuk pecinta windows (kalau-kalau Anda tidak memiliki bash, grep atau awk)
sumber
Jalankan perintah berikut untuk menghapus gambar dengan docker rmi
sumber
Hapus semua kontainer yang sudah keluar
atau pindahkan wadah sesuai dengan pola
sumber
coba ini untuk melihat daftar gambar buruh pelabuhan ID dengan tag
<none>
dan kemudian Anda dapat menghapus semua gambar dengan tag
<none>
. ini berhasil untuk saya.sumber
100% berfungsi: gambar buruh pelabuhan | grep tidak ada | awk '{print $ 3}' | xargs docker rmi -f
sumber
mencoba
docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}')
, sementara mungkin ada perintah yang lebih bersihDiperbarui
sumber
docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "" {print $3}
tidak melakukan apapun!Hapus saja gambar menggunakan ID mereka:
sumber
Gambar yang menjuntai adalah ghost dari build dan pull sebelumnya, cukup hapus dengan: docker rmi $ (docker images -f "dangling = true" -q)
sumber
Menyatakan gambar berikut di mana digunakan. Saya pikir perintah ini menghilangkan gambar yang tidak diinginkan.
sumber