Où sont stockés les images et les conteneurs Docker sur l'hôte ?  – CloudSavvy IT
Agence web » Actualités du digital » Comment ajouter, remplacer et supprimer des balises d’image Docker – CloudSavvy IT

Comment ajouter, remplacer et supprimer des balises d’image Docker – CloudSavvy IT

Docker utilise des balises pour identifier des versions distinctes d’une image. En commun avec la communauté des conteneurs au sens large, des balises doivent être utilisées pour marquer chaque version afin que les utilisateurs puissent choisir entre différentes versions.

Les balises peuvent également être utilisées pour décrire d’autres caractéristiques d’une image telles que l’identité d’une dépendance clé lorsque plusieurs options sont proposées. Il n’est pas rare de trouver des vendeurs d’images proposant ce type de tag :

example-image:1.1.0-apache
example-image:1.1.0-nginx
example-image:1.2.0-apache
example-image:1.2.0-nginx

Ce schéma de balises vous permet de choisir entre différentes versions de l’image tout en proposant Apache ou NGINX comme base de l’image.

Vous pouvez ajouter vos propres balises à n’importe quelle image que vous créez ou extrayez. Les balises locales vous permettent d’identifier rapidement des images spécifiques à l’avenir. Dans ce guide, nous montrerons comment gérer les balises d’image avec la CLI Docker.

Les balises sont ajoutées aux images à l’aide de la docker tag commander. Des balises peuvent également être attachées lorsque vous créez une image avec docker build en passant le -t drapeau.

le tag La commande prend deux arguments : un existant tag identifiant une image et un nouveau tag « cible » à attribuer à cette image :

# docker tag <source image> <new tag>
docker tag example-image:1.1.0 example-image:1.1.0-apache

Les deux balises feront désormais référence à la même image afin que vous puissiez commencer à les utiliser de manière interchangeable. Cependant, courir docker pull example-image:1.1.0 n’affecterait pas la 1.1.0-apache étiqueter. La référence d’image d’une balise n’est pas mise à jour à moins que vous ne l’ayez incluse manuellement dans une commande CLI.

La seule exception à cette règle est le souvent mal compris latest étiqueter. Lorsque vous extrayez une image « nue » sans balise, telle que docker pull example-imageDocker utilise implicitement latest.

Images non taguées

le docker tag La commande acceptera les ID d’image comme référence source au lieu d’une balise existante. Si vous vous retrouvez avec une image non taguée, exécutez le docker images commande pour trouver son ID, puis utilisez docker tag pour attribuer un nouveau tag :

docker tag 0e3e06b48755 example-image:latest

Il est possible d’avoir des images sans tag lorsque vous extrayez une nouvelle version d’un tag :

# already has example-image:latest
docker pull example-image:latest

L’objectif initial de la example-image:latest balise existe toujours sur votre système, mais elle n’est plus balisée. L’extraction a téléchargé les nouvelles données d’image et a réaffecté le latest tag pour le référencer.

Une situation où vous devez ajouter une nouvelle balise est lorsque vous transférez des images entre les registres. L’URL du registre fait partie de la balise. Ajoutez une nouvelle balise qui inclut le registre vers lequel vous souhaitez pousser, puis utilisez docker push pour le télécharger :

docker tag example-image:latest registry.example.com/example-image:latest
docker push registry.example.com/example-image:latest

Pousser une balise nue sans composant d’URL enverra les données d’image à Docker Hub. Par conséquent, vous devez ajouter une balise avec le nom d’hôte de votre serveur et le numéro de port facultatif lorsque vous interagissez avec un registre privé.

le docker tag remplacera silencieusement la référence d’une balise si une balise existante est utilisée comme cible :

docker tag first-image:latest demo
docker tag second-image:latest demo

le demo la balise fait maintenant référence à second-image et ne peut pas être utilisé pour référencer first-image. Vous pouvez toujours interagir avec la première image en utilisant sa balise restante, first-image:latest. La deuxième image peut être sélectionnée soit avec second-image:latest ou demo.

Les balises d’image doivent généralement être traitées comme immuables. Il est préférable d’éviter cette technique de modification de la référence d’une balise, sauf pour les balises que vous utilisez à des fins d’organisation locale. Ce n’est pas une bonne idée de pousser une balise mise à jour vers un registre public car les utilisateurs qui en dépendent recevront une image modifiée de manière inattendue la prochaine fois qu’ils tireront. Poussez une autre nouvelle balise à la place dans cette situation.

# Build and push v1
docker build -t example-image:v1 .
docker push example-image:v1

# v1 now refers to different image data
# This is fine for local use (tags in the 
# registry are independent of your local tags).
docker build -t example-image:v1 .

# Don't do this - now the tag in the registry
# has been changed too, which could negatively 
# impact existing users.
docker push example-image:v1

Vous pouvez supprimer les balises des images que vous avez importées sur votre ordinateur. Utilisez le docker rmi commande, en spécifiant la balise que vous souhaitez supprimer :

docker rmi example-image:1.1.0-apache

Toutes les autres balises faisant référence aux mêmes données d’image resteront utilisables. Dans le cas où l’image référencée deviendrait non balisée, la CLI Docker supprime complètement les données d’image. Cela garantit que vous ne vous retrouverez pas avec des images non balisées à la suite d’instructions de suppression explicites.

La suppression d’une balise n’a d’effet que localement, même si vous faites référence à une balise qui inclut une URL de registre :

# Does not remove the tag from the registry!
docker rmi registry.example.com/example-image:latest

Vous ne pouvez actuellement pas supprimer une balise spécifique d’un registre. Ceci est conforme au principe d’immuabilité des balises : une fois que vous avez poussé le contenu, il peut être utilisé comme dépendance par les consommateurs en aval, de sorte que l’API de registre omet un point de terminaison de suppression de balise. Cependant, de nombreuses implémentations de registres tiers fournissent un mécanisme équivalent ; cela vaut la peine de vérifier la documentation pour vous si vous avez une raison impérieuse de supprimer une balise poussée.

Sommaire

Les balises sont utilisées pour étiqueter les images Docker avec des informations distinctives clés telles que leur version de construction et les dépendances incluses. Les balises sont beaucoup plus simples à utiliser que les ID SHA d’image que vous pouvez afficher avec docker images. Les balises sont également le principal mécanisme d’interaction avec les images dans les registres distants.

Vous pouvez gérer vos propres balises sur votre ordinateur local, mais les modifications n’affecteront pas le contenu du registre. Vous devez également considérer que bien que les balises sont mutable, cette propriété ne doit pas être utilisée de manière abusive et il est préférable de l’éviter lors de l’envoi de balises vers un registre. Cela permet de protéger vos utilisateurs contre les modifications avec rupture indésirables.

★★★★★