Supposons que j'ai une image que je souhaite étiqueter 0.10.24
(dans mon cas, c'est une image contenant Node.js 0.10.24). J'ai construit cette image en utilisant un Dockerfile et en l'exécutant docker build
et en fournissant une balise en utilisant le -t
paramètre.
Je m'attends à ce qu'un jour, j'aurai des versions supplémentaires de cette image, donc je vais relancer le processus, juste avec un autre nom de balise.
Jusqu'ici tout va bien. Cela fonctionne très bien et tout va bien.
Mais, et c'est là que les problèmes commencent, je veux également toujours avoir la plus récente annonce balisée avec image latest
. Je suppose donc que je dois donner deux noms à la même image.
Comment puis-je faire cela? Ai-je vraiment besoin de réexécuter docker build
sur la même version exacte, mais cette fois, utilisez une autre balise, existe-t-il une meilleure option?
Réponses:
Vous pouvez avoir plusieurs balises lors de la création de l'image:
Référence: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
la source
:latest
partie, car c'est la valeur par défaut:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Une fois que vous avez votre image, vous pouvez utiliser
Créez et marquez l'image avec creack / node: dernier
Ajouter une nouvelle balise
Vous pouvez l'utiliser et ignorer la partie -t de la construction
la source
creack/node:latest
, vous pouvez ensuite la marquer avecdocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
afin de forcer le balisage avec la dernière (dans le cas où une image précédente était déjà la plus récente)Voici mon script bash
Vous pouvez ensuite supprimer les images non balisées si vous avez reconstruit la même version avec
lien
ou
ou
Commandes de nettoyage :
Docker 1.13 introduit des commandes de nettoyage. Pour supprimer tous les conteneurs, images, réseaux et volumes inutilisés:
ou individuellement:
la source
awk '{print $3}'
fonctionne mais pasawk "{print $3}"
si la commande que j'utilise estdocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
option n'existe plus dansdocker tag
. L'utilisation est justedocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
aprèsdocker build & docker run
, appuyez-vous avec:latest
ou${VERSION}
?ID=$(docker build -t creack/node .)
ne fonctionne pas pour moi depuisID
contiendra la sortie de la construction.J'utilise donc ce petit script BASH:
la source
-q
/--quiet
àbuild
comme mentionné dans cette réponseSaisissez simplement l'ID de
docker images
:Ne nécessite aucun fichier temporaire et donne une sortie de génération complète . Vous pouvez toujours le rediriger vers
/dev/null
ou vers un fichier journal.la source
Variation de la réponse d'Aaron. Utilisation de sed sans fichiers temporaires
la source