Misalkan saya memiliki gambar yang ingin saya tandai 0.10.24
(dalam kasus saya ini adalah gambar yang mengandung Node.js 0.10.24). Saya membangun gambar itu menggunakan Dockerfile dan mengeksekusi docker build
dan dengan memberikan tag menggunakan -t
parameter.
Saya berharap bahwa suatu hari saya akan memiliki versi tambahan dari gambar itu, jadi saya akan menjalankan kembali prosesnya, hanya dengan nama tag lain.
Sejauh ini baik. Ini bekerja dengan baik dan bagus dan semuanya baik-baik saja.
Tapi, dan di sinilah masalah mulai, saya juga ingin selalu memiliki iklan gambar tag baru latest
tambahan. Jadi saya kira saya harus memberikan dua nama ke gambar yang sama.
Bagaimana saya melakukan ini? Apakah saya benar-benar perlu menjalankan docker build
kembali versi yang sama persis, tetapi kali ini menggunakan tag lain, apakah ada opsi yang lebih baik?
Jawaban:
Anda dapat memiliki beberapa tag saat membuat gambar:
Referensi: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
sumber
:latest
bagian, karena itu adalah default:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Setelah Anda memiliki gambar Anda, Anda dapat menggunakannya
Buat dan beri tag pada gambar dengan creack / node: terbaru
Tambahkan tag baru
Anda bisa menggunakan ini dan melewati bagian -t dari build
sumber
creack/node:latest
, Anda dapat menandainya dengandocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
untuk memaksa pemberian tag dengan yang terbaru (seandainya gambar sebelumnya sudah terbaru)Ini skrip bash saya
Anda kemudian dapat menghapus gambar yang tidak ditandai jika Anda membuat ulang versi yang sama dengannya
tautan
atau
atau
Bersihkan perintah :
Docker 1.13 memperkenalkan perintah pembersihan. Untuk menghapus semua wadah, gambar, jaringan, dan volume yang tidak digunakan:
atau secara individual:
sumber
awk '{print $3}'
berfungsi tetapi tidakawk "{print $3}"
begitu perintah yang saya gunakan adalahdocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
pilihan tidak ada lagi didocker tag
. Penggunaan hanyadocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
setelahdocker build & docker run
, apakah Anda mendorong dengan:latest
atau${VERSION}
?ID=$(docker build -t creack/node .)
tidak berfungsi untuk saya karenaID
akan berisi output dari build.JADI Saya menggunakan skrip BASH kecil ini:
sumber
-q
/--quiet
untukbuild
sebagaimana disebutkan dalam jawaban iniCukup ambil ID dari
docker images
:Tidak perlu file sementara dan memberikan output build penuh . Anda masih dapat mengarahkan ulang ke
/dev/null
atau file log.sumber
Variasi jawaban Harun. Menggunakan sed tanpa file sementara
sumber