Je suis confus quant à la différence entre les registres de docker et les référentiels. Il semble que la documentation de Docker utilise les deux mots de manière interchangeable. De plus, les référentiels sont parfois appelés images, telles que celle-ci à partir de leurs documents
Pour transférer un référentiel dans son registre, vous devez avoir nommé une image ou engagé votre conteneur pour 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 tag.
Comment pouvez-vous pousser un référentiel vers un registre? Ne poussez-vous pas l'image dans le référentiel?
Le registre Docker est un service qui stocke vos images de menu fixe.
Le registre Docker peut être hébergé par un tiers, en tant que registre public ou privé, comme l'un des registres suivants:
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 d'images de docker différentes portant le même nom et portant des étiquettes différentes. Tag est un identifiant alphanumérique de l'image dans un référentiel.
Par exemple, voir https://hub.docker.com/r/library/python/tags/ . Il existe de nombreuses balises pour l'image python officielle. Ces balises sont toutes membres du référentiel python officiel sur le hub Docker. Docker Hub est un registre Docker hébergé par Docker.
Pour en savoir plus, lisez:
Extrait du livre Utilisation de Docker, Développement et déploiement de logiciels avec des conteneurs
Registres, référentiels, images et tags
Il existe un système hiérarchique de stockage des images . La terminologie suivante est utilisée:
Registre
Un service responsable de l'hébergement et de la distribution des images. Le registre par défaut est le hub Docker.
Repository
Collection d'images associées (fournissant généralement différentes versions de la même application ou du même service).
Tag
Identificateur alphanumérique associé aux images d’un référentiel (par exemple, 14.04 ou stable).
La commande docker pull amouat/revealjs:latest
téléchargera donc la dernière image balisée dans le référentiel amouat/revealjs
à partir du registre de Docker Hub.
Complétant l'information:
docker Push
.namespace/repo-name:tag
myregistryhost:5000/namespace/repo-name:tag
Un référentiel Docker est une jolie combinaison de registry
et image
.
docker tag foo <registry>/<image>:<tag>
est le même que
docker tag foo <repository>:<tag>
Docker Hub et les autres services d’hébergement de référentiels tiers sont appelés «registres». Un registre stocke une collection de référentiels.
Un registre peut avoir plusieurs référentiels et un référentiel peut avoir plusieurs versions différentes de la même image qui sont individuellement versionnées avec des balises.
Docker Registry est un service que vous pouvez héberger vous-même (avec confiance et privé) ou vous pouvez laisser Docker hub héberger ce service. Généralement, si votre logiciel est commercial, vous l’auriez hébergé en tant que registre "privé et de confiance". Pour les développeurs Java, cela ressemble un peu à la configuration de Maven Artifactory.
Le référentiel Docker est un ensemble d'images "étiquetées". Par exemple, vous avez peut-être étiqueté 5 images ubuntu:latest
:
a) Nano éditeur (image1_tag: v1)
b) Un logiciel spécifique 1 (image1_tag: v2)
c) Sudo (image1_tag: v3)
d) démon http Apache (image1_tag: v4)
e) Tomcat (image1_tag: v5)
Vous pouvez utiliser la commande docker Push
pour envoyer chacune des images ci-dessus dans votre référentiel. Tant que les noms des référentiels correspondent, ils seront poussés avec succès, ils apparaîtront sous le référentiel choisi et correctement étiquetés.
Maintenant, votre question est: "Alors, où ce référentiel est-il hébergé/qui gère le service"? C’est là que Docker Registry entre en scène. Par défaut, vous obtiendrez un registre Docker Hub (Open Source) que vous pourrez utiliser pour conserver votre référentiel privé/public. Ainsi, sans aucune modification, vos images seront placées dans votre référentiel privé dans docker hub. Voici un exemple de sortie lorsque vous poussez vos balises d’image:
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 vérifier que vos balises d’image poussées affichent maintenant une nouvelle signature par rapport au référentiel privé géré par le registre de docker hub.