web-dev-qa-db-fra.com

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

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? 

101
Kingamere

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:

125
Nemanja Trifunovic

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.

47
user1108948

Complétant l'information:

  • Vous poussez généralement un référentiel vers un registre (et toutes les images qui en font partie). Mais vous pouvez envoyer une seule image à un registre. Dans tous les cas, vous utilisez docker Push.
  • Une image a un identifiant d'image de 12 chiffres 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 registre. Nom d'hôte et port: myregistryhost:5000/namespace/repo-name:tag
  • Une convention de dénomination commune consiste à utiliser le nom d'utilisateur de votre registre comme ce que j'ai appelé "espace de noms". 
6
Paulo Merson

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>
0
dhulihan

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.

0
Abhishek Jain

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.

0
ha9u63ar