Étiquetage d'images dans le docker
J'ai un serveur jenkins suivi d'un repo git et la construction d'une image docker sur un changement de code. L' .répertoire git est ignoré dans le cadre de la construction, mais je veux associer le git commit de hachage avec l'image de sorte que je sais exactement quelle version du code a été utilisé pour le faire, et de vérifier si l'image est à jour.
La solution évidente est de la balise de l'image avec quelque chose comme "application-nom-direction générale-nom:-validation de hachage", mais pour beaucoup de développer les branches je veux seulement garder la dernière bonne construction et en ajoutant des balises va faire le nettoyage de vieux construit plus difficile (plutôt que d'utiliser le numéro de build jenkins comme l'image est construite, puis retagging :dernière et untagging le numéro de build)
L'autre possibilité est d'étiquettes, mais tout cela avait l'air prometteur au départ, il s'est avéré plus compliqué dans la pratique..
Le seul moyen que je vois pour appliquer une étiquette directement à une image est dans le Dockerfile, qui ne peuvent pas utiliser la construction des variables d'environnement, donc j'aurais besoin d'utiliser une sorte de création de modèles pour produire une coutume Dockerfile.
L'autre façon d'appliquer une étiquette est de démarrer un conteneur de l'image avec une simple commande (par exemple, bash) et en passant dans les étiquettes comme docker run arguments. Le récipient peut alors être engagé en tant que nouvelle image. Cela a l'effet pervers de rendre l'image par défaut de la commande ce qui a été utilisé avec l'étiquetage de conteneurs (si bash dans ce cas) plutôt que de tout ce qui était à l'origine, Dockerfile. Pour mon application, je ne peux pas utiliser la commande réelle, car il va commencer à changer l'état de l'application.
Aucune de ces semblent particulièrement idéale à quelqu'un d'autre a trouvé une meilleure façon de faire cela?
source d'informationauteur user1130072
Vous devez vous connecter pour publier un commentaire.
Soutien pour cette a été ajouté dans le menu fixe v1.9.0, donc la mise à jour de votre support d'installation de cette version permettrait de résoudre votre problème, si c'est OK avec vous.
Utilisation est décrite dans le menu requête ci-dessous:
https://github.com/docker/docker/pull/15182
Comme un exemple, prenez les Dockerfile fichier:
et de l'intégrer dans une image nommée
test
que n'importe qui ferait naïvement:Puis inspectez le
test
image de vérifier quelle est la valeur retrouvé pour lagit-commit
étiquette:Maintenant, à construire l'image de nouveau, mais cette fois en utilisant la
--build-arg
option:Puis inspectez le
test
image de vérifier quelle est la valeur retrouvé pour lagit-commit
étiquette:Références:
--build-arg
optionARG
directiveLABEL
directiveVous pouvez spécifier une étiquette sur la ligne de commande lors de la création de votre image. Si vous écrivez quelque chose comme
au lieu de coder en dur les de version vous pouvez également l'obtenir directement à partir de git:
À la lecture de l'étiquette à partir de vos images vous pouvez utiliser
docker inspect
avec une chaîne de format: