Définition
Docker Hub est un service de registre basé sur le cloud qui permet aux développeurs de stocker, de partager et de distribuer des images de conteneurs. Il sert de bibliothèque centrale par défaut pour Docker, offrant aux utilisateurs la possibilité de tirer des composants logiciels pré-buildés ou de pousser leurs propres applications vers le cloud afin de faciliter la collaboration.
Vue d’ensemble de Docker Hub
Docker Hub, le registre de conteneurs officiel de Docker, prend en charge une adoption mondiale massive, avec des milliards d’images extraites chaque mois dans des dépôts publics et privés.
Docker est omniprésent, ce qui rend la compréhension des spécificités de l’écosystème difficile. Qu’est-ce qu’un registre de conteneurs exactement ? Quels sont les avantages de l’utilisation de Docker Hub ? Nous allons vous aider à répondre à ces questions et vous fournir un exemple étape par étape de la façon dont vous pouvez commencer à utiliser le registre officiel de Docker, Docker Hub.
Qu’est-ce qu’un registre Docker ?
Un registre Docker (en anglais, Docker registry) est un service qui héberge et distribue des images Docker. Dans de nombreux cas, un registre est constitué de plusieurs dépôts contenant des images liées à un projet spécifique. Dans un dépôt donné, les balises sont utilisées pour différencier les versions d’une image, telles que ubuntu/httpd:version2.4, ubuntu/httpd:version2.5, ubuntu/httpd:version2.6, « version2.x » étant la balise. Les utilisateurs peuvent réaliser un pull des images qu’ils souhaitent utiliser ou procéder à un push des images qu’ils souhaitent stocker dans un registre.
En fournissant une source centralisée d’images, les registres permettent un contrôle plus strict des versions et facilitent la gestion et la distribution des images. En outre, de nombreux services de registre offrent des fonctionnalités supplémentaires qui permettent d’automatiser les processus de build et de déploiement tout en améliorant la sécurité.
Les registres Docker peuvent être hébergés dans le cloud ou sur site. En plus de Docker Hub, d’autres exemples populaires de registres Docker incluent :
- Quay
- Google Container Registry
- Amazon Elastic Container Registry (Amazon ECR)
- JFrog Artifactory et JFrog Container Registry
Vous pouvez même créer votre propre registre Docker à partir de l’image de registre officielle, mais il vaut généralement la peine d’explorer d’autres solutions avant d’utiliser cette image de base comme point de départ.
Quelles sont les caractéristiques de Docker Hub ?
Docker Hub est le registre officiel basé sur le cloud de Docker pour les images Docker.
Comme vous pouvez vous en douter, Docker Hub, en tant que registre officiel de Docker, est le registre par défaut lorsque vous installez Docker. Il héberge plus de 100 000 images, dont les images officielles de MongoDB, nginx, Apache, Ubuntu et MySQL, qui ont toutes été téléchargées plus d’un milliard de fois chacune.
Outre les dépôts publics accessibles à tous, Docker Hub propose des dépôts privés dans lesquels des individus ou des équipes peuvent héberger des images auxquelles eux seuls ont accès. Docker Hub offre également des fonctionnalités, telles que les intégrations GitHub et Bitbucket, qui permettent d’automatiser les processus de build dans le développement logiciel et la prise en charge des webhooks qui peuvent servir de déclencheurs pour tout ce qui concerne les tests automatisés et les notifications.
Pourquoi utiliser Docker Hub ?
Alors, avec toutes les options de registres Docker, pourquoi devriez-vous opter pour Docker Hub ? Voici quelques-uns des principaux avantages qu’il présente par rapport à la concurrence :
- Une vaste bibliothèque d’images de confiance – les images Docker Certified, les images Verified Publisher (certifiées par Docker et vérifiées par l’éditeur) et les images officielles publiées par Docker apportent une confiance supplémentaire aux utilisateurs. Avec des millions, ou dans certains cas des milliards, de téléchargements pour de nombreuses images couramment utilisées, lorsque vous utilisez Docker Hub, vous pouvez compter sur une image de base fiable. Si cette approche est très appréciée par les utilisateurs, elle bénéficie aussi aux éditeurs, car l’hébergement d’une image sur Docker Hub peut accroître la visibilité de votre projet.
- Une offre gratuite – Actuellement, le plan gratuit de Docker propose un nombre illimité de dépôts publics ainsi qu’un dépôt privé avec jusqu’à 3 collaborateurs. Ceci est utile pour les tests de base afin de vous familiariser avec la plateforme. Cependant, les récents changements apportés aux conditions d’utilisation le rendent impropre à un développement logiciel sérieux.
- Fonctions de sécurité intégrées – tous les comptes peuvent bénéficier d’analyses de vulnérabilité des images locales. Les comptes « Team » ont également accès aux journaux d’audit et à l’authentification multifactorielle (MFA) afin de sécuriser davantage les dépôts.
- Intégrations et fonctionnalités permettant la CI et la CD – docker Hub prend également en charge les intégrations GitHub et Bitbucket, les tests automatisés, les déclencheurs de build et les webhooks pour aider à automatiser les pipelines de développement logiciel et permettre la CI et la CD (intégration et livraison continues).
Cela dit, il n’y a jamais de solution unique, et Docker Hub ne sera donc pas la bonne réponse pour tous les cas d’utilisation. Par exemple, si vous devez stocker des images sur site pour réduire la latence ou vous conformer aux normes du secteur, une solution basée sur le cloud comme Docker Hub n’est pas le choix idéal.
Cependant, si vous décidez d’utiliser Docker Hub malgré ces contraintes, vous devrez peut-être mettre en cache les images localement pour réduire la latence et la consommation de bande passante. Quelles que soient les exigences de votre environnement, le respect des bonnes pratiques vous permet de tirer le meilleur parti de votre implémentation de Docker Hub.
Quelles sont les bonnes pratiques pour utiliser Docker Hub ?
Docker Hub simplifie le partage et la consommation d’images de conteneurs, mais sans normes claires, il est facile d’introduire des inefficacités ou même des risques de sécurité. Le respect de quelques bonnes pratiques permet de garantir la sécurité, la cohérence et l’efficacité de vos images.
Considérations relatives à la sécurité
La sécurité commence avec l’origine de vos images. Il est toujours préférable de travailler avec des images officielles et des éditeurs vérifiés, car ils subissent des examens de qualité et de sécurité supplémentaires. S’appuyer sur des sources non vérifiées peut sembler être un bon moyen d’augmenter l’efficacité, mais pas lorsqu’il expose votre environnement à de graves vulnérabilités.
Un autre piège courant est l’utilisation du tag latest, qui évolue dans le temps et peut ne pas correspondre à la version réellement recherchée. L’épinglage de versions explicites ou de résumés immuables garantit que l’image que vous déployez est la même que celle que vous avez testée, évitant ainsi des changements inattendus en production. Pour plus d’informations, consultez la présentation d’Aqua Security sur l’utilisation responsable de Docker Hub, qui met l’accent sur les images signées, la MFA pour les comptes et l’analyse continue des vulnérabilités.
Les dépôts privés doivent également être sécurisés par une authentification multifacteur et des contrôles d’accès basés sur les rôles. Pour les entreprises, des solutions comme JFrog Container Registry apportent des fonctionnalités de gouvernance, d’audit et de scan automatisé pour renforcer davantage la sécurité du pipeline.
Versionnage et balisage
Des pratiques de gestion des versions claires sont la base de la reproductibilité. Au lieu de vous fier à la dernière balise changeante, vous devez établir une stratégie de balisage cohérente qui correspond à votre workflow. Les équipes adoptent souvent le versioning sémantique (v1.2.0) pour suivre les changements incrémentaux, ou utilisent des balises spécifiques à l’environnement comme staging et prod pour aligner les images sur les déploiements.
L’objectif est la cohérence : lorsque les développeurs et les pipelines appliquent les mêmes règles de balisage, il est beaucoup plus facile d’identifier quel build est en cours d’exécution en production ou de revenir à l’image de travail précédente. La documentation de Docker Hub explique en détail le fonctionnement des dépôts et des balises, fournissant une base de référence pour élaborer votre stratégie.
Surveillance et optimisation de la taille des images
La taille des images a un impact direct sur les performances et la sécurité. Les images plus petites se téléchargent plus rapidement, consomment moins de bande passante et réduisent la surface d’attaque. Pour limiter la taille des images, il est recommandé de commencer avec des images de base minimales, puis d’y ajouter uniquement ce qui est nécessaire.
Une autre étape clé consiste à maintenir un fichier .dockerignore pour exclure les journaux, les données de test ou d’autres artefacts inutiles du contexte de build. Au fil du temps, l’audit de vos images à la recherche de bibliothèques obsolètes et de packages inutilisés permet d’éviter une inflation silencieuse. Pour des conseils pratiques, l’atelier de Docker sur les bonnes pratiques de création d’images explique comment la superposition et la gestion du contexte peuvent améliorer l’efficacité.
En intégrant des contrôles de sécurité dans votre workflow, en adoptant des stratégies de tagging claires et en réduisant le poids inutile des images, vous vous assurez que Docker Hub reste une base fiable pour vos applications conteneurisées. Le résultat n’est pas seulement des builds plus propres, mais une plus grande confiance dans le fait que chaque déploiement est reproductible, fiable et sécurisé.
Comment utiliser Docker Hub : un cours accéléré
Maintenant que vous comprenez ce qu’est Docker Hub, voyons comment l’utiliser. Nous allons vous montrer comment extraire une image de Docker Hub vers votre machine locale, puis charger une version avec une balise vers votre propre dépôt.
Si vous souhaitez suivre les instructions, vous aurez besoin d’un compte Docker Hub. Si vous n’avez pas de compte, vous pouvez vous inscrire ici. Après cela, vous devrez également installer Docker.
Étape 1 : Créer votre dépôt
Une fois que vous avez un compte Docker Hub, vous pouvez créer un dépôt en quelques clics sur https://hub.docker.com/repositories.
Tout d’abord, cliquez sur Create Repository. Donnez ensuite un nom et une description à votre dépôt, sélectionnez s’il doit être public ou privé, puis cliquez sur Create.
Étape 2 : Télécharger (pull) une image Docker de Docker Hub
Vous pouvez créer votre propre image si vous le souhaitez, mais pour les besoins de ce tutoriel, nous utiliserons l’image « Hello World ».
Nous allons commencer par nous connecter à notre compte Docker depuis notre terminal avec la commande pseudo docker login -u <>username.
Ensuite, nous allons récupérer l’image Docker « Hello World » avec la commande docker pull hello-world.
Étape 3 : Transférer (push) une image vers votre dépôt privé
Maintenant que nous avons l’image « Hello World », copions-la avec un nouveau nom avant de l’envoyer dans notre dépôt privé. Nous allons le faire avec la commande docker tag <current image name> <our user name>/<new image name> [:tag]. Nous utiliserons la commande docker images pour lister nos images avant et après afin de pouvoir voir le changement.
Maintenant, nous pouvons pousser l’image vers notre dépôt privé avec la commande docker push <our user name>/<new image name> [:tag].
Le push fait référence au dépôt [ docker.io/ ourusername /johnnyodemo].
Lorsque nous revenons à notre compte Docker Hub, nous pouvons voir que la nouvelle balise est stockée dans notre dépôt privé.
Comment mettre en proxy Docker Hub avec JFrog Container Registry
Nous avons mentionné précédemment que l’offre gratuite de Docker Hub peut limiter les efforts de développement. L’une des principales raisons est la limitation du nombre de pushs et de pulls. La mise en cache d’images en dehors de Docker Hub peut vous permettre de dépasser ces limites. Par conséquent, trouver le bon proxy Docker Hub et la bonne solution de mise en cache peut s’avérer très utile. L’utilisation de cette technique vous permet de bénéficier des avantages de Docker Hub, tels qu’une multitude d’images de confiance, tout en évitant la limitation de débit qui peut paralyser les workflows CI/CD.
Voyons maintenant comment configurer JFrog Container Registry comme proxy pour Docker Hub afin de mettre en cache les images fréquemment utilisées. Nous utiliserons la plateforme cloud pour cet exemple, mais vous pouvez également utiliser JFrog sur site gratuitement.
Conseil de pro : pour une analyse plus approfondie de la configuration de JFrog Container Registry ou de tout autre sujet de la plateforme JFrog, nous vous recommandons de lire notre documentation.
Étape 1 : Créer votre essai gratuit
Accédez à ce lien pour créer votre essai gratuit sans carte de crédit. Il vous suffit de saisir vos identifiants et vous recevrez un e-mail pour valider votre compte. Cliquez sur le lien pour terminer votre inscription. Une fois l’écran de confirmation affiché, connectez-vous et passez à l’étape 2.
Note : nous vous recommandons de choisir un emplacement de serveur qui est géographiquement proche de votre emplacement.
Étape 2 : Naviguer jusqu’à la section des dépôts à distance
Une fois que vous êtes connecté à votre nouveau compte, cliquez sur Administration → Repositories → Repositories
Étape 3 : Créer un nouveau dépôt à distance
Cliquez sur Remote → + New Remote Repository
Cliquez sur l’icône Docker dans la fenêtre contextuelle SELECT PACKAGE TYPE.
Sur l’onglet Basic, saisissez votre Repository Key et pour l’URL, utilisez l’adresse suivante pour Docker Hub : https://registry-1.docker.io/
Pour cet exemple de base, nous pouvons laisser tous les autres paramètres par défaut. Si vous souhaitez associer votre compte Docker Hub afin que vos requêtes push/pull vers Docker Hub soient authentifiées, vous pouvez le faire dans l’onglet Advanced.
Lorsque vous avez terminé, cliquez sur Save & Finish.
Étape 4 : Connectez-vous à votre compte nouvellement créé et téléchargez une image
Depuis votre CLI Docker, exécutez la commande docker login.
Ensuite, téléchargez une image comme vous le feriez à partir du hub Docker, mais ajoutez-lui une URL au format <your_server>.jfrog.io/your_repository/. Nous allons extraire l’image Ubuntu actuelle ici, nous allons donc utiliser : <your_server>.jfrog.io/your_repository/ubuntu.
Plus important encore, nous pouvons également consulter notre compte JFrog et constater que l’image y est également mise en cache ! Nous avons réussi à mettre l’image en cache pour une utilisation ultérieure.
Au-delà de la mise en place d’un proxy Docker Hub, certaines équipes ont également mis en place leur propre registre local pour encore plus de contrôle.
Configuration d’un registre Docker local
Bien que Docker Hub soit le registre par défaut pour la plupart des développeurs, il existe des situations où l’exécution de votre propre registre local est plus logique. Un registre auto-hébergé donne aux équipes plus de contrôle sur la sécurité, la conformité et les performances, en particulier dans les environnements d’entreprise ou réglementés.
Étapes pour installer et configurer un registre local
Docker fournit une image de registre open source que vous pouvez déployer rapidement. En exécutant cette image, vous créez un service privé où vous pouvez réaliser des push et des pull des images comme vous le feriez avec Docker Hub. Par exemple :
docker run -d -p 5000:5000 --name registry registry:2
Cette commande lance un registre sur le port 5000. Pour l’utiliser, étiquetez une image avec l’adresse locale et pushez-la dans le registre :
docker tag ubuntu:22.04 localhost:5000/ubuntu:22.04
docker push localhost:5000/ubuntu:22.04
Vous pouvez ensuite procéder au pull de la même image de votre registre local :
docker pull localhost:5000/ubuntu:22.04
Sécurisation et gestion des accès
Étant donné que les images de conteneur peuvent inclure du code ou des dépendances sensibles, la sécurisation de votre registre local est essentielle. Les bonnes pratiques consistent à activer le protocole HTTPS avec un certificat TLS de confiance, à exiger une authentification pour les pushs et les pulls, et à restreindre l’accès aux utilisateurs de confiance ou aux réseaux internes. Les grandes entreprises étendent souvent ces contrôles avec des solutions d’entreprise comme JFrog Container Registry, qui ajoute un accès basé sur les rôles, un audit et une réplication.
Cas d’utilisation et avantages
Un registre Docker local est utile dans plusieurs scénarios, notamment :
- Latence réduite : les images peuvent être extraites plus rapidement sur les réseaux internes qu’à partir d’un service cloud.
- Conformité et sécurité des données : les industries réglementées peuvent exiger que les artefacts restent sur site.
- Environnements à air gap : les serveurs sans accès à Internet ont également besoin d’accéder à un catalogue d’images de confiance.
- Mise en cache des images fréquemment utilisées : les équipes peuvent éviter les limites de pulls de Docker Hub et réduire l’utilisation de la bande passante.
En mettant en place un registre local, les entreprises contrôlent mieux leur chaîne d’approvisionnement de conteneurs tout en conservant les workflows familiers que les développeurs utilisent déjà avec Docker Hub.
Prochaines étapes avec Docker Hub
Pour résumer ce que nous avons couvert ici :
- Les registres Docker sont utilisés pour héberger et distribuer des images Docker
- Docker Hub est le registre basé sur le cloud officiel de Docker
- Pour commencer avec Docker Hub, vous pouvez télécharger (pull) une image ou charger (push) une de vos images locales
- Trouver le bon registre Docker sur site ou basé sur le cloud, comme JFrog Container Registry, peut aider à optimiser la façon dont Docker Hub s’intègre dans votre pipeline de développement.
Bien sûr, ce ne sont là que les bases. La conteneurisation révèle tout son potentiel à travers les projets que vous construisez et les pipelines de développement que vous créez pour les accompagner. Avec Docker Hub, vous disposez d’une excellente ressource pour créer des images de base utiles sur lesquelles vous pouvez vous appuyer, et d’une variété d’outils pour rationaliser vos processus de collaboration, de test et de CI/CD.
Registres de niveau entreprise avec JFrog
Docker Hub est un excellent point de départ pour apprendre à stocker et à partager des images de conteneurs, mais lorsque votre pipeline de développement évolue, vous aurez rapidement besoin de plus de contrôle, de sécurité et de fiabilité qu’un registre de cloud public ne peut en fournir.
JFrog Artifactory et JFrog Container Registry étendent l’expérience familière de Docker Hub avec des fonctionnalités de niveau entreprise telles que des contrôles d’accès précis, la réplication sur plusieurs sites, l’analyse des vulnérabilités et l’intégration dans les workflows CI/CD. En mettant en cache les images Docker Hub tout en sécurisant et en gouvernant les vôtres, JFrog aide les équipes à éliminer les limites de débit, à améliorer la conformité et à rationaliser la livraison. Avec JFrog, vous pouvez tirer parti de la simplicité de Docker Hub et la faire évoluer vers une chaîne d’approvisionnement de conteneurs fiable et prête pour la production.
Pour plus d’informations, veuillez consulter notre site web, organisez une visite virtuelle ou organisez une démonstration individuelle à votre convenance.