Saya ingin menghapus semua versi gambar buruh pelabuhan dengan nama yang mengandung string yang diberikan ( imagename
).
Saya telah mencoba yang di bawah ini, tetapi sepertinya tidak berhasil:
docker images | grep 'imagename' | xargs -I {} docker rmi
docker images |grep 'imagename'
Versi yang sedikit lebih tepat - grep hanya pada nama repositori:
sumber
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
sumber
docker images --format '{{.Repository}}:{{.Tag}}
memfilter keluaran sehingga hanya repo & tag yang ditampilkan (yaitufoo:latest
).grep 'imagename
memfilter baris tersebut hanya untuk gambar yang berisiimagename
. Menempatkan itu di$()
mengevaluasi itu & lolos ke luardocker rmi
yang menghapus gambar-gambar yang cocok.docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter=reference='imagename:*')'
docker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -Pattern 'imagename')
docker images
sebenarnya menggunakan argumen posisi pertama sebagai nama gambar untuk difilter. Tidak perlu grep dan awk. The-q
pilihan akan kembali hanya gambar pencocokan ID yang dapat diumpankan kedocker rmi
.The
uniq
diperlukan untuk menghapus duplikat, jika Anda memiliki gambar yang sama ditandai berbeda.sumber
Cukup Anda dapat menambahkan
--force
di akhir perintah. Suka:sudo docker rmi <docker_image_id> --force
Untuk membuatnya lebih cerdas, Anda dapat menghentikan semua container yang sedang berjalan sebelum menghapus gambar:
Di
docker ps
, $ 1 adalah kolom pertama yaitu ID kontainer buruh pelabuhan dan $ 3 adalah kolom ke-3 yaitu id gambar buruh pelabuhansumber
Saya menemukan jawaban saya lebih sederhana.
Contoh, nama gambar Anda adalah
python_image
.Maka kode Anda harus :
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
Saya harap ini membantu.
sumber
Saya juga mendapat jawaban singkat lainnya. Satu-satunya perubahan adalah menghapus
-I {}
bendera yang tidak perlu .docker images | grep 'imagename' | xargs docker rmi
sumber
Ini akan menghapus semua gambar dengan nama "imageName". Dalam beberapa kasus, ini mungkin memberikan kesalahan seperti "gambar direferensikan di satu atau lebih repositori". Dalam hal ini gunakan hapus paksa.
Cara lain bisa dengan:
sumber
Untuk beberapa alasan saya tidak dapat menggunakan jawaban yang diberikan di sini. Inilah yang berhasil untuk saya.
docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi
awk '{print $3}'
adalah bagian penting. Ini mengekstrak id dari kolom ke-3.sumber
Bagi saya bekerja ( Docker versi 19.03.5 ):
Perintah " docker images 'imagename' -q " akan menampilkan semua gambar id dari argumen kutip tunggal sehingga menggabungkannya dengan docker rmi (atau docker rmi -f untuk memaksa) itu akan menghapus semua gambar dengan nama yang dipilih
sumber
sumber
Komentar kecil: Dari apa yang kami alami, tampaknya Anda - sejak buruh pelabuhan 18.03 - tidak lagi dapat menghapus gambar yang tidak diberi tag hanya berdasarkan namanya. Anda juga perlu menggunakan nama + tag seperti yang disebutkan di atas atau menggunakan ID.
sumber
docker rmi $(docker images --filter=reference="IMAGENAME:TAG")
misalnya jika saya memiliki gambar berikut
Kemudian
docker rmi $(docker images --filter=reference="abcd*:*4.0")
akan menghapus empat gambar pertama.Informasi lebih lanjut silakan lihat https://docs.docker.com/engine/reference/commandline/images/
sumber
docker rmi $(docker images -q --filter=reference="IMAGENAME:TAG")
Kumpulkan solusi untuk pertanyaan ini untuk memenuhi kebutuhan saya, yang tidak pernah diposting sebelumnya.
Saya ingin mencocokkan lokal dibangun gambar:
library/myapp
bahwa saya telah berganti nama, tag, dan mendorong ke repo pribadi:myrepo.org/library/myapp
. Setelah mereka didorong, saya ingin membersihkan reg. Buruh pelabuhan lokal.Dan saya tidak peduli jika tidak ada yang ditemukan atau perintah membuat kesalahan. Demikian ditambahkan
|| true
di akhir untuk dimasukkan ke dalam skrip.sumber
Berdasarkan jawaban @ Aditya, Anda juga dapat membuat fungsi bash untuk menghapus gambar dengan mudah. Letakkan fungsi ini di file
~/.profile
. Buat sesi shell baru atau sumber dengansource ~/.profile
.Pemakaian:
sumber
Informasi:
Berikan kesalahan ini:
Mungkin karena gambar saya terlihat seperti ini:
Saya harus menggunakan id gambar dan melakukan perintah ini:
Untuk membuang kontainer yang sudah keluar:
sumber