Bagaimana cara menghapus tag gambar di Docker tanpa menghapus gambar itu sendiri?

134

Katakanlah saya ingin memberi tag pada gambar Docker, dan membuat salah ketik. Bagaimana cara menghapus tag tanpa menghapus gambar itu sendiri? Baik manual maupun dokumentasi Docker tidak menyebutkan tag yang dihapus.

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!
Mihai
sumber
4
Bagi mereka yang ingin <none>menghapus tag-gambar yang ditandai seperti foo/bar:<none>: gunakan docker images --digestsdan docker rmi foo/bar@<digest>seperti yang dijelaskan di success.docker.com/KBase/…
Janaka Bandara

Jawaban:

194

Jika gambar Anda ditandai dengan lebih dari satu tag, maka docker rmiakan menghapus tag, tetapi bukan gambar.

Jadi, dalam contoh Anda ...

# docker rmi my-imaj

... akan menghapus tag itu dan membiarkan gambar hadir dengan tag lain yang benar.

Richard Corfield
sumber
4
Terima kasih. Saya berharap mereka menyebutkan ini dalam dokumentasi: - /
Mihai
2
Jika tag yang saya hapus adalah yang terakhir, gambar akan dihapus. Jadi saya bertanya-tanya apa jawaban dari pertanyaan dalam topik? Bagaimana cara menghapus tag dan menyimpan gambar dalam cache?
kub1x
4
Dan jawabannya adalah seperti biasa digunakan--help , jangan malas membaca. docker image remove --no-prune.. jika seseorang tertarik.
kub1x
4
Ini salah, hanya menghapus gambar saya. Untungnya, mengetahui buruh pelabuhan saya sudah curiga, dan membuat cadangan sebelumnya dengan docker save.
user259412
2
@peterh jawabannya dengan jelas menyatakan If your image is tagged with more than one tag..., itu harus diperbarui namun dengan perintah dari komentar yang menjelaskan cara menghapus tag terakhir tanpa menghapus gambar.
BrainSlugs83
18

Jalankan docker rmi REPOSITORY:TAGuntuk menghapus tag.

Nilai REPOSITORYdan TAGberasal dari docker imagesoutput.

Sebagai contoh

$ docker rmi my-image:0e5574283393
Untagged: my-image:0e5574283393
ashishjain
sumber
blog.tmtk.net/2013/09/16/how_to_remove_tag_on_docker.html . Ini dapat memberi Anda bantuan lebih lanjut
ashishjain
17

Mulai dari repo buruh pelabuhan yang kosong, impor gambar dengan mengetik:

#docker run hello-world

Jalankan docker imagesperintah untuk mendaftar gambar. Hasilnya akan terlihat seperti ini:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

Sekarang mari kita membuat tag gambar yang disebut v1 dengan menjalankan docker tagperintah:

#docker tag hello-world:latest hello-world:v1

Jika kita menjalankan docker imagesperintah, kita akan melihat tag baru kita seperti ini:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
hello-world         v1          7bc42cc48a84      4 weeks ago       316MB

Untuk menghapus tag tertentu (untuk menjawab pertanyaan asli), jalankan docker rmi di hello-world:v1mana v1 adalah nama tag. Outputnya akan terlihat seperti ini:

#docker rmi hello-world:v1
Untagged: hello-world:v1

Jalankan docker imagesperintah untuk mendaftar gambar. Perhatikan bahwa tag gambar telah dihapus:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
Travis Rennemann
sumber
Pendekatan yang paling tidak ambigu meskipun 3 tahun kemudian. +1
bvj
0

Beri tag pada gambar lain dengan nama tag Anda dan setelah itu tag Anda dari gambar Anda saat ini akan dihapus.

Nikolay
sumber
Selamat datang di ServerFault! Tolong jelaskan atau tambahkan beberapa langkah contoh perintah. Lihat panduannya di sini: serverfault.com/help/how-to-answer
Cory Knutson
Bukan jawaban yang berguna, jika tag itu salah ketik seperti yang ditunjukkan, Anda tidak akan menginginkannya pada gambar lain juga.
Ken Williams