aku sedang mencoba
docker rmi c565603bc87f
Kesalahan:
Respons kesalahan dari daemon: konflik: tidak dapat menghapus c565603bc87f (tidak dapat dipaksa) - gambar bergantung pada gambar anak
Jadi saya tidak bisa menghapus gambar bahkan dengan flag -f. Bagaimana cara menghapus gambar itu dan semua anaknya?
Versi Linux dan buruh pelabuhan:
uname -a Linux goracio-pc 4.4.0-24-generic # 43-Ubuntu SMP Rabu 8 Juni 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
versi docker Klien: Versi: 1.11.2 Versi API: 1.23 Versi go: go1.5.4 Git commit: b9f10c9 Dibangun: Rabu, 1 Juni 22:00:43 2016 OS / Arch: linux / amd64
Server: Versi: 1.11.2 Versi API: 1.23 Go versi: go1.5.4 Git commit: b9f10c9 Dibangun: Rabu 1 Juni 22:00:43 2016 OS / Arch: linux / amd64
docker
docker-image
Roma
sumber
sumber
Jawaban:
Anda harus mencoba untuk menghapus gambar yang tidak perlu sebelum menghapus gambar:
Setelah itu, jalankan:
sumber
prune
> "docker rmi" requires at least 1 argument.
--filter=dangling=true
. Jika Anda masih mendapatkan kesalahan itu, itu berarti Anda tidak memiliki gambar yang menggantung, sehingga perintah in-set dievaluasi menjadi string kosong.Dalam beberapa kasus (seperti dalam kasus saya), Anda mungkin mencoba menghapus gambar dengan menentukan id gambar yang memiliki banyak tag yang tidak Anda sadari ada, beberapa di antaranya dapat digunakan oleh gambar lain. Dalam hal ini, Anda mungkin tidak ingin menghapus gambar .
Jika Anda memiliki case tag berlebihan seperti yang dijelaskan di sini, alih-alih
docker rmi <image_id>
gunakandocker rmi <repo:tag>
pada tag redundan yang ingin Anda hapus.sumber
docker rmi <repo:tag>
bekerja untuk saya. Solusi Anda cukup sederhana di antara jawaban-jawaban itu, terima kasih.Untagged: drud/ddev-webserver:20200301_leymannx_apache-junk-built
repo:tag
karena itu membuat delapan gambar yang ditandai hanya berbagi dua id gambar. Bahkan Visual Studio tidak akan menghapusnya di jendela manajemen kontainernya ...docker rmi <repo:tag>
hanya untag , itu tidak serta merta menghapus gambar. Jika ada lebih dari satu tag yang mereferensikan gambar ini, atau jika ada masalah lain seperti misalnya yang dinyatakan oleh OP, gambar itu akan tetap ada. Anda dapat memeriksa bahwa gambar masih ada dengan perintahdocker images ls --all
.semua jawaban sebelumnya benar tetapi di sini ada satu solusi yang hanya menghapus semua gambar Anda secara paksa ( gunakan perintah ini dengan risiko Anda sendiri, itu akan menghapus semua gambar Anda )
sumber
docker image rm $(docker image ls -a -q) -f
temukan id gambar dan id induk untuk semua gambar yang dibuat setelah gambar yang bersangkutan dengan yang berikut:
Kemudian Anda memanggil perintah:
"sub_image_id" adalah ID dari gambar tergantung
sumber
Yang berhasil bagi saya adalah menggunakan kombinasi REPOSITORY: TAG daripada ID IMAGE.
Ketika saya mencoba untuk menghapus gambar buruh pelabuhan dengan perintah
docker rmi <IMAGE ID>
tanpa wadah yang terkait dengan gambar ini saya mendapat pesan:Saya bisa menghapus dengan sukses ketika saya menggunakan perintah
docker rmi RPOSITORY:TAG
sumber
docker rmi 93fd78260bd1
gagal, tetapi kemudiandocker tag 93fd78260bd1 ubuntu:temp && docker rmi ubuntu:temp
berhasil.Untagged: ubuntu:18.04v1
). Jika Anda melakukannyadocker images -a
, Anda mungkin akan melihat3f66bec2c6bf
masih terdaftar. Jika gambar benar-benar dihapus, Anda akan mendapatkan pesanDeleted: 3f66bec2c6bf
PERINTAH INI MENGHAPUS SEMUA GAMBAR (GUNAKAN DENGAN HATI-HATI)
Sudahkah Anda mencoba menggunakan --force
Kode di atas ini berjalan seperti pesona bahkan doe saya punya masalah yang sama
sumber
Jawabannya di sini adalah untuk menemukan semua anak keturunan, yang memiliki jawaban di sini:
buruh pelabuhan bagaimana saya bisa mendapatkan daftar gambar anak tergantung?
Kemudian gunakan itu untuk menghapus gambar anak secara berurutan.
sumber
Berikut ini skrip untuk menghapus gambar dan semua gambar yang bergantung padanya.
sumber
Setelah itu gunakan perintah seperti yang disarankan Nguyen.
sumber
Membangun metode brute force Simon Brady di sini , jika Anda tidak memiliki banyak gambar, Anda dapat menggunakan fungsi shell ini:
dan kemudian menyebutnya menggunakan
recursive_remove_image <image-id>
.sumber
Ex:
sumber
Ketika saya ingin menghapus beberapa gambar yang tidak terpakai dengan nama
"<none>"
di docker saya menghadapi masalahunable to delete a354bbc7c9b7 (cannot be forced) - image has dependent child images
. Jadi untuk mengatasi masalah ini:Anda dapat melihat bahwa saya memiliki beberapa Gambar dengan nama javaapp: nama wadah terbaru dan berbeda. Jadi, saya membunuh dan menghapus semua kontainer dari wadah "javaapp: latest" dengan:
Kemudian
Jadi saya bisa menghapus semua gambar dengan nama
"<none>"
semoga berhasil
sumber
Saya juga mendapat masalah ini, saya bisa menyelesaikan masalah dengan perintah di bawah ini. ini mungkin menyebabkan, wadah gambar sedang berjalan atau keluar jadi sebelum menghapus gambar Anda harus menghapus wadah
buruh pelabuhan ps -a -f status = keluar: perintah ini menunjukkan semua kontainer yang keluar jadi salin ID wadah dan kemudian jalankan perintah di bawah ini untuk menghapus wadah
buruh pelabuhan rm #containerId: perintah ini menghapus wadah ini mungkin masalah yang menyebutkan "gambar memiliki gambar anak yang bergantung"
Kemudian cobalah untuk menghapus gambar dengan perintah di bawah ini
buruh pelabuhan rmi #ImageId
sumber
Saya memiliki masalah ini dan tidak ada jawaban singkat di sini yang berfungsi, bahkan di halaman yang disebutkan oleh @tudor di atas. Saya pikir saya akan berbagi di sini bagaimana saya menyingkirkan gambar. Saya datang dengan gagasan bahwa gambar dependen harus> = ukuran gambar induk, yang membantu mengidentifikasinya sehingga kami dapat menghapusnya.
Saya mencantumkan gambar dalam urutan ukuran untuk melihat apakah saya dapat menemukan korelasi:
Apa yang dilakukan, adalah menggunakan beberapa pemformatan khusus dari buruh pelabuhan untuk memposisikan kolom ukuran gambar terlebih dahulu, kemudian jalankan pengurutan yang dapat dibaca manusia dalam urutan terbalik. Lalu saya mengembalikan kolom yang mudah dibaca.
Kemudian saya melihat
<none>
wadah, dan mencocokkan yang pertama dalam daftar dengan ukuran yang sama. Saya melakukan sederhanadocker rmi <image:tag>
pada gambar itu dan semua<none>
gambar anak pergi bersamanya.Gambar masalah dengan semua gambar anak sebenarnya
myrepo/getstarted-lab
gambar sialan yang saya gunakan ketika saya mulai bermain dengan buruh pelabuhan. Itu karena saya telah membuat gambar baru dari gambar uji pertama yang menciptakan rantai.Semoga itu membantu orang lain di beberapa titik.
sumber
Misalkan kita memiliki Dockerfile
Kami membangun gambar dari itu tanpa TAG atau penamaan
Sekarang kami memiliki laporan sukses "Berhasil membangun 57ca5ce94d04" Jika kita melihat gambar buruh pelabuhan
Kita harus menghapus dulu
docker rmi 57ca5ce94d04
Diikuti oleh
Dengan gambar itu akan dihapus!
Pemindahan paksa semua seperti yang disarankan oleh seseorang
sumber
Memperluas jawaban yang disediakan oleh @Nguyen - fungsi ini dapat ditambahkan ke
.bashrc
dll Anda dan kemudian dipanggil dari commandline untuk membantu membersihkanimage has dependent child images
kesalahan ...Anda dapat menjalankan fungsinya sendiri, dan jika
docker ps
gagal, maka ia akan menjalankandocker
perintah dengansudo
dan meminta kata sandi Anda.Apakah tidak menghapus gambar untuk setiap kontainer berjalan!
Saya juga punya ini di
.bashrc
file saya ...Bekerja dengan:
sumber
Hapus paksa daftar gambar (tidak termasuk versi 10, misalnya)
sumber
Anda bisa melakukan ini:
➜ ~ sudo buruh pelabuhan rmi 4ed13257bb55 -f Dihapus: SHA256: 4ed13257bb5512b975b316ef482592482ca54018a7728ea1fc387e873a68c358 Dihapus: SHA256: 4a478ca02e8d2336595dcbed9c4ce034cd15f01229733e7d93a83fbb3a9026d3 Dihapus: SHA256: 96df41d1ce6065cf75d05873fb1f9ea9fed0ca86addcfcec7722200ed3484c69 Dihapus: SHA256: d95efe864c7096c38757b80fddad12819fffd68ac3cc73333ebffaa42385fded
sumber
Lapisan Gambar: Gudang sering disebut sebagai gambar atau wadah gambar, tetapi sebenarnya mereka terdiri dari satu atau lebih lapisan. Lapisan gambar dalam repositori terhubung bersama dalam hubungan orangtua-anak. Setiap lapisan gambar mewakili perubahan antara dirinya dan lapisan induk.
Pola bangunan buruh pelabuhan menggunakan warisan . Itu berarti versi
i
tergantung pada versii-1
. Jadi, kita harus menghapus versii+1
untuk dapat menghapus versii
. Ini adalah ketergantungan yang sederhana.Jika Anda ingin menghapus semua gambar kecuali yang terakhir (yang paling diperbarui) dan yang pertama (basis) maka kami dapat mengekspor yang terakhir (yang paling diperbarui) menggunakan
docker save
perintah seperti di bawah ini.Lalu, sekarang, hapus semua gambar menggunakan image-id seperti di bawah ini.
Sekarang, muat gambar tgz Anda yang disimpan seperti di bawah ini.
lihat id gambar dari gambar Anda yang dimuat menggunakan buruh pelabuhan ps -q. Tidak ada tag dan nama. Anda cukup memperbarui tag dan nama seperti yang dilakukan di bawah ini.
sumber