Pembaruan September 2016: Docker 1.13: PR 26108 dan komit 86de7c0 memperkenalkan beberapa perintah baru untuk membantu memfasilitasi memvisualisasikan berapa banyak ruang yang diambil data daemon buruh pelabuhan pada disk dan memungkinkan untuk dengan mudah membersihkan kelebihan "yang tidak dibutuhkan".
docker system prune
akan menghapus SEMUA data yang menggantung (mis. Agar: kontainer berhenti, volume tanpa wadah dan gambar tanpa wadah). Bahkan data yang tidak digunakan, dengan -a
opsi.
Anda juga memiliki:
Untuk gambar yang tidak digunakan , gunakan docker image prune -a
(untuk menghapus gambar yang menggantung dan tidak diberi gambar).
Peringatan: ' tidak digunakan ' berarti "gambar tidak dirujuk oleh wadah apa pun": hati-hati sebelum menggunakan -a
.
Seperti digambarkan dalam AL 's jawaban , docker system prune --all
akan menghapus semua terpakai gambar bukan hanya menggantung orang ... yang dapat sedikit terlalu banyak.
Menggabungkan docker xxx prune
dengan --filter
opsi bisa menjadi cara yang bagus untuk membatasi pemangkasan ( buruh pelabuhan SDK API 1.28 minimum, jadi buruh pelabuhan 17.04+ )
Filter yang saat ini didukung adalah:
until (<timestamp>)
- hanya menghapus wadah, gambar, dan jaringan yang dibuat sebelum stempel waktu yang diberikan
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, Atau label!=<key>=<value>
) - hanya menghapus kontainer, gambar, jaringan, dan volume dengan (atau tanpa , dalam kasus label!=...
digunakan) label yang ditentukan.
Lihat " Pangkas gambar " untuk contohnya.
Jawaban asli (Sep. 2016)
Saya biasanya melakukan:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Saya memiliki alias untuk menghapus [gambar menggantung] 13 :drmi
The dangling=true
Filter menemukan gambar yang tidak terpakai
Dengan begitu, gambar perantara apa pun yang tidak lagi dirujuk oleh gambar berlabel dihapus.
Saya melakukan hal yang sama terlebih dahulu untuk proses yang keluar (wadah)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Sebagai haridsv poin di komentar :
Secara teknis, Anda harus terlebih dahulu membersihkan wadah sebelum membersihkan gambar, karena ini akan menangkap lebih banyak gambar yang menggantung dan lebih sedikit kesalahan .
Jess Frazelle (jfrazelle) memiliki fungsi bashrc :
dcleanup(){
docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
Untuk menghapus gambar-gambar lama, dan bukan hanya gambar-gambar yang "tidak direferensikan", Anda dapat mempertimbangkan docker-gc
:
Wadah Docker sederhana dan skrip pengumpulan sampah gambar.
- Kontainer yang keluar lebih dari satu jam yang lalu dihapus.
- Gambar yang bukan milik wadah yang tersisa setelah itu dihapus.
"dangling=true"
sebenarnya berarti?