utwórz obraz dokowany wielu znaczników

147

docker pull ubuntu otrzyma wiele obrazów tagów.

Czy można utworzyć wiele tagów w jednym pliku Dockerfile? takiego jak ubuntu?

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

Tutaj potrzebowałem tagów dla różnych treści. (Nie ta sama treść z wieloma tagami aliasów)

Daniel YC Lin
źródło
1
Powiązane pytanie: stackoverflow.com/questions/22080706/…
Mark Butler

Odpowiedzi:

79

Nie możesz tworzyć tagów za pomocą Dockerfiles, ale możesz utworzyć wiele tagów na swoich obrazach za pomocą wiersza poleceń.

Użyj tego, aby wyświetlić swoje identyfikatory obrazu:

$ docker images

Następnie oznacz:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...
David Braun
źródło
4
Głównym punktem jest w Dockerfile, tych poleceń nie można zapisać w Dockerfile.
Daniel YC Lin
1
Zobacz tę odpowiedź , aby dowiedzieć się, jak uniknąć konieczności ręcznego określania identyfikatora.
Jonathon Reinhart
437

Od wersji 1.10 możesz teraz dodawać wiele tagów naraz podczas kompilacji:

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

Źródło: Dodaj możliwość dodawania wielu tagów za pomocą kompilacji docker

Marc Perrin-Pelletier
źródło
5
Myślę, że jest to bardziej poprawna odpowiedź, jeśli chodzi o łatwość użycia w procesie kompilacji
brasskazoo
To nie jest właściwe, ponieważ tag ubuntu dla innej wersji, zawartość jest niejasna.
Daniel YC Lin,
2
Jak jednak sprawić, by te tagi pojawiły się w repozytorium po wypchnięciu? Niestety w repozytorium pojawia się tylko ten, którego używam w poleceniu push.
Czechnology
4
Nawet pod koniec 2018 roku Docker jest nadal niewiarygodnie niedojrzały pod tym względem, każdy `` tag '' musi być nadal wciskany osobno, mimo że jest dołączony do tego samego obrazu. Wymagane są tutaj pewne możliwości podobne do tagów Git.
Ed Randall,
-8

Jak tego nie robić:

Tworząc obraz, możesz również otagować go w ten sposób.

docker build -t ubuntu:14.04 .

Następnie tworzysz go ponownie z innym tagiem:

docker build -t ubuntu:latest .

Jeśli Twój plik Dockerfile dobrze wykorzystuje pamięć podręczną, powinien pojawić się ten sam obraz i skutecznie robi to samo, co ponowne oznaczenie tego samego obrazu. Jeśli to zrobisz docker images, zobaczysz, że mają ten sam identyfikator.

Prawdopodobnie jest jednak przypadek, w którym to się nie udaje ... Ale jak powiedział @ david-braun, nie można tworzyć tagów z samych plików Dockerfiles, tylko za pomocą polecenia docker.

maniok
źródło
3
Dodam, że robienie tego jak @ david-braun jest czystsze.
maniok
14
Nie buduj dwa razy. Zobacz tę odpowiedź .
Jonathon Reinhart
build dwukrotnie pokonuje pojęcie CI / CD ... druga kompilacja może być różna w zależności od zależności ... wszystko zależy od czasu.
Richard
4
Dzięki jasnemu nagłówkowi „Jak tego nie robić”, ta odpowiedź wnosi teraz coś do zrozumienia, jak to działa.
Ed Randall