créer une image de menu fixe à plusieurs balises

148

Comment plusieurs balises peuvent-elles être attachées à une image Docker? Est-il possible de créer plusieurs balises à l'aide d' un fichier Dockerfile ?

C'est possible, en quelque sorte ; par exemple docker pull ubuntuobtiendra plusieurs images, dont certaines ont plusieurs balises:

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
la source
1
Question connexe: stackoverflow.com/questions/22080706/…
Mark Butler

Réponses:

79

Vous ne pouvez pas créer de balises avec Dockerfiles, mais vous pouvez créer plusieurs balises sur vos images via la ligne de commande.

Utilisez ceci pour lister vos identifiants d'image:

$ docker images

Puis taguez:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...
David Braun
la source
4
Le point majeur est dans Dockerfile, ces commandes n'ont pas pu être écrites dans Dockerfile.
Daniel YC Lin
1
Voir cette réponse pour une manière qui évite d'avoir à déterminer manuellement l'ID.
Jonathon Reinhart
439

Depuis la version 1.10 , vous pouvez désormais ajouter plusieurs balises à la fois lors de la construction:

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

Source: ajouter la possibilité d'ajouter plusieurs balises avec la construction de docker

Marc Perrin-Pelletier
la source
5
Je pense que c'est la réponse la plus correcte pour la facilité d'utilisation dans un processus de construction
brasskazoo
Ce n'est pas correct, car la balise de l'ubuntu pour une version différente, le contenu est différent.
Daniel YC Lin
2
Comment puis-je faire apparaître ces balises dans le référentiel après une poussée? Malheureusement, seul celui que j'utilise dans la commande push apparaît dans le référentiel.
Czechnology
4
Même à la fin de 2018, Docker est encore incroyablement immature à cet égard, chaque `` tag '' doit toujours être poussé séparément bien qu'il soit attaché à la même image. Ce qui est requis ici, c'est une capacité similaire aux balises Git.
Ed Randall
-8

Comment ne pas le faire:

Lors de la création d'une image, vous pouvez également la baliser de cette façon.

docker build -t ubuntu:14.04 .

Ensuite, vous le reconstruisez avec une autre balise:

docker build -t ubuntu:latest .

Si votre Dockerfile utilise à bon escient le cache, la même image devrait sortir, et cela fait effectivement la même chose que le repérage de la même image. Si vous le faites, docker imagesvous verrez qu'ils ont le même identifiant.

Il y a probablement un cas où cela va mal cependant ... Mais comme @ david-braun l'a dit, vous ne pouvez pas créer de balises avec Dockerfiles eux-mêmes, juste avec la commande docker.

manioc
la source
3
Je pourrais ajouter que le faire comme @ david-braun est plus propre.
manioc
14
Ne construisez pas deux fois. Voyez cette réponse .
Jonathon Reinhart
build deux fois bat la notion de CI / CD ... la deuxième compilation pourrait être différente en fonction des dépendances ... tout est dans le timing.
Richard
4
Avec le titre clair «Comment ne pas le faire», cette réponse ajoute maintenant quelque chose à la compréhension de son fonctionnement.
Ed Randall