Bagaimana saya bisa menghapus Docker's gambar?

I've gambar berikut:

alex@alexvps:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              70c0e19168cf        5 days ago          1.069 GB
<none>              <none>              c2ce80b62174        8 days ago          399.2 MB
<none>              <none>              60afe4036d97        8 days ago          325.1 MB

dan ketika saya mencoba untuk menghapus salah satu dari mereka saya mendapatkan:

alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images

Bagaimana saya bisa menghapus mereka? Mengapa ada konflik seperti ini?

Larutan

Dalam rangka untuk menghapus semua gambar, gunakan perintah yang diberikan

docker rmi $(docker images -q)

Dalam rangka untuk menghapus semua wadah, gunakan perintah yang diberikan

docker rm $(docker ps -a -q)

Peringatan: Ini akan menghancurkan semua gambar anda dan kontainer. Itu tidak akan mungkin untuk mengembalikan mereka!

Solusi ini disediakan oleh Techoverflow.net.

Komentar (10)

Alasan yang mungkin: Alasannya bisa bahwa gambar ini saat ini digunakan oleh menjalankan wadah. Dalam kasus seperti ini, anda bisa klik disini untuk menjalankan wadah, berhenti relevan wadah dan kemudian menghapus gambar:

docker ps
docker stop 
docker rm 
docker rmi 

Jika anda cannnot menemukan wadah docker ps, anda dapat menggunakan ini untuk membuat daftar semua sudah keluar dari wadah dan memindahkan mereka.

docker ps -a | grep 60afe4036d97
docker rm 

Catatan: hati-hati menghapus semua keluar wadah sekaligus dalam kasus anda gunakan Volume-Hanya kontainer. Ini menginap di Keluar negara, tapi berisi data yang berguna.

Komentar (5)

Alasan untuk kesalahan ini adalah bahwa meskipun gambar tidak memiliki tag, di sana masih ada sebuah wadah yang dibuat pada gambar itu yang mungkin di keluar negara. Jadi, anda perlu memastikan bahwa anda telah berhenti dan menghapus semua wadah yang dibuat pada gambar-gambar tersebut. Perintah berikut ini akan membantu anda dalam menghilangkan semua wadah yang tidak menjalankan:

docker rm `docker ps -aq --no-trunc --filter "status=exited"`

Sekarang ini menghilangkan semua menjuntai non-menengah <none> gambar:

docker rmi `docker images --filter 'dangling=true' -q --no-trunc`

Catatan: Untuk berhenti semua berjalan kontainer:

docker berhenti docker ps -q

Komentar (2)

Gambar yang bisa digunakan saat ini dengan menjalankan wadah, sehingga anda pertama kali harus berhenti dan menghapus wadah(s).

docker stop 
docker rm 

Maka anda bisa mencoba menghapus gambar:

docker rmi 

Anda harus yakin bahwa gambar ini doesn't tergantung pada gambar yang lain (jika tidak, anda harus menghapusnya terlebih dahulu).

Saya punya kasus aneh di mana saya telah tidak ada lagi wadah yang masih hidup (docker ps -a kembali apa-apa) tetapi saya tidak't mengelola untuk menghapus foto dan gambar-ketergantungan.

Untuk memecahkan kasus-kasus khusus anda bisa memaksa penghapusan gambar ini:

docker rmi -f 
Komentar (0)

Di Bash:

for i in `sudo docker images|grep \|awk '{print $3}'`;do sudo docker rmi $i;done

Ini akan menghapus semua gambar dengan nama "<none>". Saya menemukan gambar-gambar yang berlebihan.

Komentar (2)

Saya menemukan jawabannya dalam perintah ini:

docker images --no-trunc | grep none | awk '{print $3}' | xargs docker rmi

Saya punya masalah ketika saya menghapus beberapa gambar yang sedang digunakan, dan saya didn't menyadari (menggunakan docker ps -a).

Komentar (0)

Sejak Docker ver. 1.13.0 (januari 2017) ada's sistem memangkas perintah:

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
-a, --all     Remove all unused images not just dangling ones
-f, --force   Do not prompt for confirmation
    --help    Print usage
Komentar (0)

Pertama, hapus semua kontainer menggunakan perintah berikut

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

Kemudian, hapus gambar dengan ID nya menggunakan perintah berikut

sudo docker rmi 
Komentar (1)

Selain Sunny's jawaban:

Dalam rangka untuk menghapus semua gambar pada mesin Windows (dengan Docker untuk Windows) di jendela PowerShell, lakukan:

docker images -q | %{docker rmi -f $_}

Dalam rangka untuk menghapus semua kontainer pada mesin Windows (dengan Docker untuk Windows) di jendela PowerShell, lakukan:

docker ps -a -q | %{docker rm -f $_}
Komentar (0)

Anda harus menghentikan/menghapus semua yang tidak perlu kontainer yang dibuat pada gambar pertama.

Melihat-lihat: https://stackoverflow.com/questions/17236796/how-to-remove-old-docker-io-containers.

Setelah itu gunakan @marcell solusi.

Komentar (0)

Menghapus semua kontainer

docker ps -q -a | xargs docker rm

Memaksa menghapus semua gambar Docker

docker rmi -f $(docker images -f dangling=true -q)
Komentar (0)

Anda hanya bisa aadd --force pada akhir perintah. Seperti:

sudo docker rmi  --force

Untuk membuatnya lebih cerdas anda dapat menambahkan:

sudo docker stop $(docker ps | grep  | awk '{print $1}')

sudo docker rm $(docker ps | grep  | awk '{print $1}')

sudo docker rmi $(docker images | grep  | awk '{print $3}') --force

Di sini di docker ps $1 adalah kolom pertama, yaitu Docker container ID.

Dan gambar docker $3 kolom ketiga, yaitu gambar Docker ID.

Komentar (0)

Yang paling versi kompak dari perintah untuk menghapus semua untagged gambar ini:

docker rmi $(docker images | grep "^" | awk '{print $"3"}')
Komentar (0)

Untuk menghapus beberapa gambar Docker anda harus menjalankan perintah berikut:

$ docker rmi 

Jadi, untuk menghapus semua gambar Docker anda bisa menjalankan perintah berikut:

$ docker rmi $(docker images -q)

Sekarang, jika anda ingin menghapus semua Docker gambar (termasuk gambar yang di gunakan), anda dapat menambahkan bendera -f, misalnya:

$ docker rmi -f $(docker images -q)
Komentar (0)

Gunakan

docker image prune -all

atau

docker image prune -a

Menghapus semua menggantung gambar. Jika -a yang ditentukan, hal ini juga akan menghapus semua gambar yang tidak direferensikan oleh setiap wadah.

Catatan: Anda diminta untuk konfirmasi sebelum memangkas menghilangkan apa-apa, tapi anda tidak akan ditampilkan daftar dari apa yang kemungkinan akan dihapus. Selain itu, docker gambar ls tidak mendukung negatif penyaringan, sehingga sulit untuk memprediksi apa gambar akan benar-benar dihapus.

Seperti yang dinyatakan di bawah Docker's dokumentasi untuk memangkas.

Komentar (0)

Jika anda ingin secara otomatis/berkala membersihkan keluar wadah dan memindahkan gambar dan volume yang tidak't di gunakan oleh menjalankan wadah anda dapat men-download gambar Docker air lelehan/docker-pembersihan.

Dengan cara itu anda don't harus pergi membersihkannya dengan tangan.

Hanya menjalankan:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

Ini akan berjalan setiap 30 menit (atau selama yang anda set menggunakan DELAY_TIME=1800 opsi) dan membersihkan keluar wadah dan gambar.

Rincian lebih lanjut: https://github.com/meltwater/docker-cleanup/blob/master/README.md

Komentar (0)

Saya telah menemukan solusi dengan Powershell script yang akan melakukannya untuk saya.

Script pertama menghentikan semua kontainer dari menghapus semua wadah dan kemudian menghapus gambar yang dinamai oleh pengguna.

Lihat di sini http://www.devcode4.com/article/powershell-remove-docker-containers-and-images

Komentar (0)