Différence entre registre et référentiel Docker

Je suis confus quant à la différence entre les registres docker et les référentiels. Il semble que la documentation de Docker utilise les deux mots de manière interchangeable. En outre, les référentiels sont parfois appelés images, tels que ceux de leurs documents:

Afin de pousser un référentiel dans son registre, vous devez avoir nommé une image ou avoir affecté votre conteneur à une image nommée, comme nous l’avons vu ici.

Vous pouvez maintenant pousser ce référentiel vers le registre désigné par son nom ou sa balise.

Comment pouvez-vous pousser un référentiel vers un registre? Vous ne poussez pas l’image dans le repository?

Docker registry est un service qui stocke vos images de docker.

Le registre Docker pourrait être hébergé par un tiers, en tant que registre public ou privé, comme l’un des registres suivants:

  • Docker Hub ,
  • Quai ,
  • Registre des conteneurs Google ,
  • Registre de conteneurs AWS

ou vous pouvez héberger le registre de docker par vous-même
(voir https://docs.docker.com/docker-trusted-registry/ pour plus de détails).

Le référentiel Docker est une collection de différentes images de docker avec le même nom, qui ont des balises différentes. Tag est l’identifiant alphanumérique de l’image dans un référentiel.

Par exemple, voir https://hub.docker.com/r/library/python/tags/ . Il y a beaucoup de balises différentes pour l’image officielle de python, ces balises sont toutes membres du référentiel officiel de python sur le Docker Hub. Docker Hub est un registre Docker hébergé par Docker.

Pour en savoir plus, lisez:

Extrait du livre Using Docker, Développement et déploiement de logiciels avec des conteneurs

Registres, référentiels, images et balises

Il existe un système hiérarchique pour stocker les images. La terminologie suivante est utilisée:

Enregistrement

Un service responsable de l’hébergement et de la dissortingbution d’images. Le registre par défaut est le Docker Hub.

Dépôt

Une collection d’images liées (fournissant généralement différentes versions de la même application ou du même service).

Marque

Un identificateur alphanumérique attaché aux images dans un référentiel (par exemple, 14.04 ou stable).

Ainsi, la commande docker pull amouat/revealjs:latest télécharge l’image la plus récente dans le référentiel amouat/revealjs partir du registre Docker Hub.

Compléter les informations:

  • Vous poussez généralement un référentiel vers un registre (et toutes les images qui en font partie). Mais vous pouvez pousser une image unique vers un registre. Dans tous les cas, vous utilisez docker push .
  • Une image a un identifiant d’image de 12 caractères hexadécimaux, mais est également identifiée par: namespace/repo-name:tag
  • Le nom complet de l’image peut éventuellement être préfixé par le nom d’hôte et le port du registre: myregistryhost:5000/namespace/repo-name:tag
  • Une convention de dénomination commune consiste à utiliser votre nom d’utilisateur de registre comme ce que j’ai appelé “namespace”.

Un référentiel Docker est une combinaison mignonne de registry et d’ image .

 docker tag foo /: 

est le même que

 docker tag foo : 

Docker Registry est un service que vous pouvez héberger vous-même (Trusted et Private) ou vous pouvez laisser docker hub être l’hôte de ce service. Habituellement, si votre logiciel est commercial, vous l’avez hébergé en tant que registre “privé et de confiance”. Pour les développeurs Java, ceci est quelque peu analogue à la configuration de Maven Artifactory.

Docker Repository est un ensemble d’images “Tagged”. Un exemple est que vous avez peut-être tagué 5 ubuntu:latest images:

a) Nano editor (image1_tag: v1)

b) Un logiciel spécifique 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) apache http daemon (image1_tag: v4)

e) tomcat (image1_tag: v5)

Vous pouvez utiliser la commande docker push pour envoyer chacune des images ci-dessus vers votre référentiel. Tant que les noms de référentiels correspondent, ils seront poussés avec succès et apparaîtront sous votre référentiel choisi et correctement marqués.

Maintenant, votre question est la suivante: “Où est donc hébergé ce référentiel / qui gère le service”? C’est là qu’intervient Docker Registry. Par défaut, vous obtiendrez un registre Docker Hub (Open Source) que vous pourrez utiliser pour conserver votre repository privé / public. Ainsi, sans aucune modification, vos images seront transférées vers votre référentiel privé dans Docker Hub. Un exemple de sortie lorsque vous poussez vos tags d’image est le suivant:

 docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag The push refers to repository [docker.io/mydockerhub/my-helloworld-repo] bf41e934d39d: Pushed 70d93396f87f: Pushed 6ec525dfd060: Pushed 705419d10b13: Pushed a4aaef726d02: Pushed 04964fddc946: Pushed latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571 docker@my-docker-vm:/$ 

Et si vous tapez immédiatement docker images --digests -a vous pouvez confirmer que vos tags d’image poussés docker images --digests -a désormais une nouvelle signature sur le référentiel privé géré par le registre docker hub.