Agence web » Actualités du digital » Comment fonctionnent les registres de conteneurs Docker?

Comment fonctionnent les registres de conteneurs Docker?

Les registres de conteneurs Docker tels que Docker Hub sont des plates-formes d'hébergement et de partage de conteneurs Docker. Alors que le Docker Hub par défaut est axé sur les conteneurs publics, la plupart des fournisseurs de cloud comme AWS et GCP exécuteront leurs propres registres de conteneurs privés.

Que sont les registres Docker?

Les registres de conteneurs sont un système de stockage et de distribution en ligne pour les images Docker nommées. Il est assez similaire à un gestionnaire de packages comme NPM, car il peut également stocker différentes versions d'images. Toute personne disposant d'un compte de registre peut se connecter et télécharger des images créées en exécutant docker push avec un username/imagename paramètre:

docker push anthonyheddings/testcontainer

Ensuite, si vous souhaitez utiliser ce conteneur ailleurs, vous pouvez le télécharger de la même manière:

docker pull anthonyheddings/testcontainer

À moins que vous ne construisiez votre image FROM scratch, vous tirez probablement du Docker Hub. Le Docker Hub est le registre Docker par défaut.

Lorsque vous écrivez un Dockerfile pour votre application, vous pouvez étendre les images du Docker Hub à l'aide du FROM commander:

FROM ubuntu

Pour certains conteneurs comme ubuntu, ce sont des images officielles de Docker, ce qui signifie qu'elles sont si largement utilisées que vous n'avez pas besoin de spécifier le nom d'utilisateur qui les a téléchargées (ce qui peut être redondant si vous venez de taper ubuntu/ubuntu).

Marquage des conteneurs

Les conteneurs des registres Docker sont organisés en référentiels. Ils sont assez similaires au concept des référentiels Git, sauf qu'au lieu de branches, les conteneurs sont organisés à l'aide de différentes balises.

Les balises sont simplement des étiquettes qui fournissent un meilleur moyen de gérer le contrôle de version et les versions. Vous pouvez les affecter à n'importe quelle version terminée. Plutôt que de référencer l'ID de build, vous pouvez baliser une image avec une étiquette au format major.minor.patch et être facilement en mesure de dire quelle image est quelle image ou quel que soit le format que votre organisation préfère.

Si vous ne spécifiez pas de balise, Docker appliquera automatiquement la balise "la plus récente". Chaque fois que vous extrayez une image du Hub, vous tirez probablement latest sauf si vous spécifiez un numéro de version.

Vous pouvez utiliser docker tag pour marquer manuellement les images, mais c'est beaucoup plus facile à utiliser -t avec docker build.

 docker build -t username/image:tag .

Lorsque vous transmettez l'image au Docker Hub ou à tout autre registre, vous pouvez extraire différentes versions en fonction de leur balise.

Alternatives à Docker Hub

Le Docker Hub est la valeur par défaut, donc si vous n'en spécifiez pas une autre, toutes les commandes Docker qui fonctionnent avec les registres ajouteront hub.docker.com par défaut.

Cependant, de nombreux fournisseurs de cloud proposent leurs propres registres Docker en tant que service, qui s'intègrent généralement aux autres services liés aux conteneurs qu'ils fournissent. Par exemple, il existe Google Container Registry, qui fonctionne bien avec Cloud Run et leur service Kubernetes.

Vous pouvez passer à un nouveau registre, il vous suffit d'ajouter l'URL du registre à toutes les références de conteneur. Pour GCR, ce serait gcr.io:

gcr.io/anthonyheddings/test

Tout comme Docker Hub, vous devrez vous connecter au registre avec une connexion docker.

AWS dispose d'Elastic Container Registry, qui fonctionne bien avec Elastic Container Service et Elastic Kubernetes Service.

Azure possède Azure Container Registry, qui fonctionne avec son service Kubernetes.

★★★★★