membuat beberapa gambar buruh pelabuhan tag

160

Bagaimana beberapa tag dapat dilampirkan ke satu gambar Docker? Apakah mungkin untuk membuat beberapa tag menggunakan satu Dockerfile ?

Hal ini dimungkinkan, entah bagaimana ; misalnya docker pull ubuntuakan mendapatkan beberapa gambar, beberapa di antaranya memiliki beberapa tag:

ubuntu                  13.10               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  saucy               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  raring              eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  13.04               eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  12.10               5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  quantal             5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  10.04               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  lucid               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  12.04               9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  latest              9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  precise             9cd978db300e        2 weeks ago         204.7 MB
Daniel YC Lin
sumber
1
Pertanyaan terkait: stackoverflow.com/questions/22080706/…
Mark Butler

Jawaban:

84

Anda tidak dapat membuat tag dengan Dockerfiles tetapi Anda dapat membuat beberapa tag pada gambar Anda melalui baris perintah.

Gunakan ini untuk mencantumkan id gambar Anda:

$ docker images

Kemudian tandai:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...
David Braun
sumber
4
Poin utamanya ada di Dockerfile, perintah ini tidak dapat ditulis ke Dockerfile.
Daniel YC Lin
1
Lihat jawaban ini untuk cara yang menghindari keharusan mencari tahu ID secara manual.
Jonathon Reinhart
483

Sejak rilis 1.10 , Anda sekarang dapat menambahkan beberapa tag sekaligus pada build:

docker build -t name1:tag1 -t name1:tag2 -t name2 .

Sumber: Menambahkan kemampuan untuk menambahkan beberapa tag dengan build buruh pelabuhan

Marc Perrin-Pelletier
sumber
8
Saya pikir ini adalah jawaban yang lebih tepat untuk kemudahan penggunaan dalam proses pembuatan
brasskazoo
Ini tidak tepat, karena tag ubuntu untuk versi yang berbeda, isinya tidak jelas.
Daniel YC Lin
3
Bagaimana cara membuat tag ini muncul di repositori setelah dorongan? Sayangnya, hanya yang saya gunakan dalam perintah push yang muncul di repo.
Czechnology
5
Bahkan di akhir tahun 2018 Docker masih sangat belum matang dalam hal ini, setiap 'tag' masih harus didorong secara terpisah meski dilampirkan pada gambar yang sama. Yang dibutuhkan di sini adalah beberapa kemampuan yang mirip dengan tag Git.
Ed Randall
1
@EdRandall tidak masalah karena jika gambar sudah ada di repo Anda, pekerja galangan hanya menambahkan tag ke gambar alih-alih mendorong seluruh gambar lagi.
Wadu
-10

Bagaimana tidak melakukannya:

Saat membuat gambar, Anda juga bisa menandainya dengan cara ini.

docker build -t ubuntu:14.04 .

Kemudian Anda membuatnya lagi dengan tag lain:

docker build -t ubuntu:latest .

Jika Dockerfile Anda memanfaatkan cache dengan baik, gambar yang sama akan keluar, dan secara efektif melakukan hal yang sama seperti memberi tag ulang pada gambar yang sama. Jika Anda melakukannya docker imagesmaka Anda akan melihat bahwa mereka memiliki ID yang sama.

Mungkin ada kasus di mana ini salah ... Tapi seperti yang dikatakan @ david-braun, Anda tidak dapat membuat tag sendiri dengan Dockerfiles, hanya dengan perintah buruh pelabuhan.

singkong
sumber
3
Saya mungkin menambahkan bahwa melakukannya seperti @ david-braun lebih bersih.
singkong
14
Jangan membangun dua kali. Lihat jawaban ini .
Jonathon Reinhart
1
build dua kali mengalahkan gagasan CI / CD ... kompilasi kedua mungkin berbeda tergantung pada dependensi ... semuanya dalam waktu.
Richard
4
Dengan judul 'Bagaimana tidak melakukannya' yang jelas, jawaban ini sekarang menambah pemahaman tentang cara kerjanya.
Ed Randall