‫Les conditions préalables à cette leçon sont notamment de connaître les bases d'un conteneur
‫et d'une image dans Docker et de comprendre
‫les calques, ou du moins les bases des calques. Sachez quelques choses à propos de Docker Hub.
‫Cette conférence sera consacrée aux tags d'image et à la façon de les télécharger sur Docker Hub.
‫En fait, les balises sont nombreuses car elles ne sont pas aussi intuitives que vous ne
‫le pensez quand vous commencez à les utiliser. Pour pouvoir travailler avec un registre, en particulier avec Docker
‫Hub, ils doivent posséder un format spécifique. Ensuite, je vous parlerai de la relation entre
‫les balises attribuées à vos images et les identifiants de ces images.
‫Alors, commençons.
‫Parlons d'abord du marquage. balise d'image docker --help. Les images n'ont techniquement pas de nom, même si nous nous
‫y référons plutôt lorsque nous parlons avec désinvolture.
‫Si nous faisons une
‫image docker ls, vous remarquerez qu'il n'y a pas de colonne de nom.
‫En plus de l’identité de l’image, aucun d’entre nous ne se souviendra de ceux-là, non?
‫Nous devons nous y référer par trois informations différentes.
‫Sur cet écran de la commande image ls, nous n'en voyons en réalité que deux. À gauche, nous
‫voyons le
‫référentiel, puis la balise. Le référentiel est en réalité composé du nom
‫d'utilisateur ou de la barre oblique d'organisation du référentiel.
‫Ici, nous ne traitons que des images de référentiel officielles, nous
‫ne verrons donc que le nom réel du référentiel.
‫Nous avons mentionné précédemment que les images spéciales considérées comme officielles sont les seules à obtenir le
‫droit d'appeler simplement leur nom de référentiel, et non le nom réel du référentiel de barre
‫oblique d'organisation.
‫Mais si nous passons à Docker Hub et que je me contente de faire une recherche sur mysql, nous découvrirons
‫qu’il existe en fait une organisation, et pas seulement le mysql officiel, qui vient d’être
‫appelé mysql, mais aussi l’organisation SQL avec un serveur mysql, qui semble être assez populaire, car
‫il a plus d'un million de téléchargements. Cela ressemble à ce qu’il est ici: c’est en
‫fait le même serveur MySQL mais il a été créé par l’équipe MySQL d’Oracle.
‫Si je voulais réellement le télécharger, vous remarquerez ici,
‫à droite, que je dois faire un docker tirer mysql / mysql-server. Je peux réellement cliquer
‫sur le bouton Copier et le copier dans. En fait, cette image unique basée sur l'organisation sera téléchargée. Si
‫je redéfinis une image docker, vous remarquerez que le nom du référentiel inclut le nom de l'organisation.
‫Sur mon compte sur Docker Hub, je suis connu sous le nom de bretfisher. Vous pouvez le voir en haut à droite.
‫Donc, si je regardais mon tableau de bord et mes images publiques,
‫par exemple, regardons le nodemongoapp.
‫Si vous deviez le
‫télécharger, il me faudrait faire docker pull bretfisher / nodemongoapp.
‫Maintenant que nous comprenons comment le référentiel est nommé, à quoi sert la balise?
‫Le tag n'est pas tout à fait une version et ce n'est pas tout à fait une branche, mais ressemble beaucoup aux tags Git.
‫Donc, c'est un peu un peu des deux.
‫Il s’agit en réalité d’un simple pointeur sur une validation d’image spécifique, et pourrait n’importe quoi, dans ce référentiel.
‫Si nous retournons sur Docker Hub pendant une minute et que nous montons sur l'image officielle de mysql, vous verrez sur la page de couverture
‫qu'il contient ces différentes balises. Ce qu'ils essaient de dire ici, c'est que le 8. 0. 0
‫et le 8. 0 et le 8 sont tous des tags pour le même identifiant d'image.
‫Si je fais défiler ici et regarde le bouton tags, je reçois une liste complète et détaillée de tous les
‫tags qu’ils ont donnés au mysql.
‫Passons donc à Nginx, sur lequel nous avons beaucoup travaillé.
‫Nous verrons ici qu'il ne s'agit pas uniquement de chiffres, mais également de noms.
‫Il est important de souligner que ce sont en réalité toutes la même image et
‫que Docker est assez intelligent pour le savoir. Je vais à ma ligne de commande et je vois que j'ai déjà téléchargé le dernier nginx.
‫Si je regarde la page Web, je vois la dernière balise juste ici, mais on l'appelle aussi mainline.
‫Donc, si je faisais un docker tirer nginx: mainline? Ce que cela nous dit, c'est que nous savions déjà que cette image était déjà
‫dans mon cache en fonction de l'ID de l'image. Maintenant, si je refais une image
‫de menu fixe, je verrai deux nginx différents. Vous remarquerez qu'ils ont exactement le même ID d'image, car ils ne sont pas réellement stockés deux fois
‫dans le cache, ce qui, encore une fois, revient à beaucoup d'économies. Ces balises ne sont que des
‫étiquettes qui pointent vers un identifiant d'image réel et nous pouvons en avoir beaucoup qui pointent toutes sur le
‫même.
‫Alors, comment puis-je créer de nouveaux labels?
‫Eh bien, je pourrais créer mon propre fichier Docker et créer ma propre image personnalisée, mais
‫nous pouvons également renommer les images Docker existantes afin de pouvoir créer une étiquette
‫pour le menu fixe nginx bretfisher / nginx. Le format de cette commande correspond à l'image à laquelle je vais
‫attribuer une nouvelle balise, puis à la nouvelle balise que je souhaite lui attribuer.
‫Si j'ai refait une balise d'image docker --help, juste pour vous rafraîchir la mémoire, elle affiche le
‫SOURCE_IMAGE et
‫une balise facultative, puis le NEW_IMAGE une balise facultative.
‫Donc, si vous ne spécifiez pas la balise, elle sera toujours par défaut la plus récente. Dernières nouvelles ne signifient pas toujours toujours les dernières nouvelles
‫car, techniquement, je pouvais prendre un ancien logiciel et le taguer au plus tard.
‫Il n’ya rien de spécial à ce sujet mais c’est un peu le type par défaut. Vraiment, j'aimerais qu'ils
‫l'appellent par défaut et non plus tard.
‫C'est donc un
‫peu déroutant, mais généralement sur Docker Hub, en particulier lorsque vous utilisez des images officielles, vous pouvez
‫être sûr que la dernière version est généralement la dernière version stable du logiciel que vous souhaitez utiliser.
‫Faisons à nouveau une image
‫de menu fixe. Remarquez ce qui s'est passé.
‫J'ai ajouté une nouvelle balise à une image existante que je n'ai pas faite.
‫Il affiche le même ID
‫d'image et porte désormais mon nom d'utilisateur et un nouveau référentiel qui n'existe pas encore sur Docker Hub.
‫Si nous sommes allés regarder mon
‫tableau de bord, je n'ai rien qui s'appelle bretfisher / nginx.
‫Alors que se passe-t-il si je fais un push d'image de docker, semblable à un push de Git, bretfisher / nginx?
‫refusée: l'accès demandé à la ressource est refusé.
‫Donc, il a clairement essayé de télécharger ce que je viens de créer, il a essayé de télécharger cette balise, mais il m'a donné
‫un accès refusé.
‫C'est parce que je ne suis pas réellement connecté.
‫Donc, si vous regardez le menu fixe --help, vous verrez une commande de connexion et de déconnexion. Nous n'avons pas encore utilisé ceux-ci.
‫Donc, une fois que vous avez votre propre compte gratuit Docker Hub, vous pouvez vous connecter à partir de la connexion au docker en ligne de commande.
‫Donc ce que cela a réellement fait c'est qu'il y ait eu une écriture dans un fichier, qui est par défaut dans mon profil sous cat. docker / config. json, et il stockait
‫en fait une clé d’authentification qui permettrait à mon CLI de menu fixe d’accéder à Docker Hub en tant
‫que moi.
‫C’est un point important que nous verrons plus tard en production: chaque fois
‫que vous vous connectez avec la CLI de Docker, cette clé d’authentification est stockée par défaut dans le
‫profil de cet utilisateur.
‫Alors juste être conscient de cela.
‫Si vous utilisez une machine à laquelle vous ne faites pas confiance, tapez simplement docker logout.
‫Alors maintenant que nous sommes connectés, je vais appuyer sur la flèche vers le haut pour essayer de rétablir cette image.
‫D'ACCORD.
‫Donc, il semble que c'est fait.
‫Passons à Docker Hub et cliquez sur Actualiser. Le voici,
‫bretfisher / nginx. Encore une fois, je n'avais pas besoin de créer cela à partir de rien pour le télécharger.
‫Je viens tout simplement de donner une nouvelle étiquette à une image existante et, lorsque je la téléchargeais, elle
‫créait automatiquement un nouveau dépôt basé sur cette étiquette.
‫Bien sûr, je pourrais renseigner toutes les informations ici, et vous verrez que le nom de balise par
‫défaut est défini par défaut car je n’en ai pas spécifié un. Donc, je pourrais réellement revenir en arrière et faire la chose de
‫la flèche vers le haut jusqu'à ce que j'arrive à mon tag et que je puisse lui donner un tag différent.
‫Nous allons ajouter un tag supplémentaire à cette même image et je vais appeler cela du test. Si nous faisons une image docker
‫ls,
‫vous verrez que j'en ai maintenant trois avec le même identifiant d'image.
‫Si j'ai fait une image docker push bretfisher / nginx: testing, et cette fois-ci, j'ai spécifié testing, remarquez comme il est
‫dit que les couches existent déjà.
‫Cela fait partie de notre taux d'épargne impressionnant.
‫Lorsque nous téléchargeons et téléversons des images, qu'il existe déjà des calques, cela ne vous gênera pas
‫de les re-télécharger.
‫Si nous revenons en arrière et que je clique sur rafraîchir, vous verrez que j'ai maintenant une autre balise.
‫Mais bien sûr, si je viens de créer une image de menu fixe ls, nous voyons comme si nous avions vu qu'il s'agissait du même ID
‫d'image et que les deux côtés de cette connexion le savaient bien. Si je voulais que ce soit un référentiel privé, parce que
‫c'est une fonctionnalité prise en charge de Docker Hub, ce que je voudrais probablement faire, c'est d'abord créer le référentiel,
‫et lorsque je l'ai créé, j'ai spécifié qu'il soit privé.
‫Ensuite, lorsque j'y ai poussé, le code ne serait jamais publiquement sur Internet.
‫Wow, il y a beaucoup d'images et de leurs tags.
‫Faisons donc un rapide examen.
‫Comme vous pouvez le constater, vous pouvez à peu près tout marquer sur des images, mais elles doivent être
‫dans un format spécifique pour fonctionner avec Docker Hub. Vous ne pouvez pas simplement appeler nginx, puis le télécharger, car
‫cela ne fonctionnera pas tant que votre identifiant de compte ou votre organisation ne figure pas devant.
‫Ensuite, j'ai expliqué comment il est possible d'avoir plusieurs tags pour le même identifiant d'image. Le fait
‫de changer le tag ou de marquer différemment une image existante ne change en réalité pas cet identifiant.
‫Rappelez-vous que la dernière balise n'est en réalité que la balise par défaut.
‫Cela n’a rien de fondamentalement spécial, mais nous supposons en quelque sorte sur Docker
‫Hub, c’est plutôt une norme, que les utilisateurs utilisent la dernière balise pour indiquer la dernière
‫version stable de leur image. Je vous ai montré comment rapidement vous connecter et vous déconnecter de Docker Hub à partir de la CLI. Rappelez-vous que cela stocke un identifiant de
‫session dans votre configuration locale si vous êtes sur une machine Linux et que vous vous déconnectez pour le
‫supprimer si vous êtes sur une
‫machine Linux partagée ou un hôte, comme un serveur. Ensuite, rappelez-vous que si vous souhaitez créer une
‫image privée de Docker Hub, vous devez probablement créer le référentiel avant de le télécharger.