Le registre de conteneurs de DigitalOcean vous offre un espace privé dans le cloud pour stocker et distribuer vos images Docker. En plus d’offrir un référentiel d’images, le service s’intègre également aux autres services de DigitalOcean. Vous pouvez déployer des images stockées sur App Platform et les utiliser avec vos clusters Kubernetes gérés.
Avantages et fonctionnalités
Container Registry est un concurrent de Docker Hub qui vous permet de conserver vos images Docker dans votre compte DigitalOcean. C’est idéal lorsque vous accédez à ces images avec d’autres fonctionnalités de DigitalOcean. Vous n’avez pas besoin de configurer un compte Docker Hub payant séparé pour les images privées de votre application.
La charge des données conservées dans le registre de conteneurs est automatiquement équilibrée entre plusieurs régions de centres de données DigitalOcean. Cela accélère la récupération des images lorsque vous démarrez des conteneurs et que vous les extrayez vers votre machine. Contrairement aux autres fonctionnalités de DigitalOcean, vous ne pouvez pas sélectionner manuellement le centre de données d’un registre de conteneurs.
L’implémentation du registre de DigitalOcean est conforme à l’OCI, vous pouvez donc interagir avec lui à l’aide d’outils d’écosystème familiers. Des commandes comme docker push
et docker pull
fonctionnera simplement une fois que vous aurez ajouté les informations d’identification de votre registre à votre CLI. De même, les orchestrateurs tels que Kubernetes n’auront aucun mal à référencer des images dans votre registre.
Création d’un registre
Container Registry est disponible gratuitement, mais le plan gratuit comporte de sérieuses limitations. Vous obtenez un référentiel d’images (nom d’image de niveau supérieur), 500 Mo de stockage et un plafond de transfert de données sortantes de 500 Mo – suffisant pour évaluer le service mais probablement pas adapté à une utilisation à long terme. Le plan de base à 5 $/mois vous offre cinq référentiels et 5 Go, tandis que la version à 20 $/Professionnel comprend des référentiels illimités et 100 Go de stockage. Les dépassements de stockage sont facturés à 0,02 $/Go.
Créez un registre en vous connectant au panneau de configuration de DigitalOcean et en cliquant sur le lien « Registre de conteneurs » dans la barre latérale gauche. Donnez un nom à votre nouveau registre et sélectionnez votre plan de stockage. Le nom doit être unique au monde dans chaque registre DigitalOcean afin que votre premier choix puisse ne pas être disponible. Il doit comporter jusqu’à 63 caractères, y compris des lettres, des chiffres et des tirets.
La création d’un nouveau registre peut prendre quelques secondes. Vous serez redirigé vers l’écran du tableau de bord de votre registre une fois le processus terminé.
Connexion de votre CLI Docker
Votre prochaine étape consiste à connecter votre Docker CLI au registre. Vous devez fournir à Docker vos informations d’identification de registre afin qu’il puisse envoyer et extraire des images à l’aide de votre compte. Il existe trois manières différentes d’y parvenir.
Utiliser Doctl
L’utilitaire de ligne de commande officiel de DigitalOcean, Doctl, inclut un script pratique qui configure votre client Docker pour qu’il fonctionne avec votre registre de conteneurs.
Vous aurez besoin d’avoir Doctl installé et authentifié sur votre compte DigitalOcean pour utiliser cette méthode. Exécutez la commande suivante pour configurer l’intégration :
doctl registry login
Utilisation d’un jeton d’API DigitalOcean
Les jetons d’API DigitalOcean peuvent être utilisés pour s’authentifier auprès des registres de conteneurs. Générez un jeton en cliquant sur le lien « API » en bas de la barre latérale gauche de votre compte DigitalOcean. Cliquez sur « Générer un nouveau jeton », donnez-lui un nom et appuyez sur « Générer un jeton » dans la fenêtre contextuelle suivante.
La valeur du jeton sera affichée. Notez-le car vous ne pourrez pas le récupérer plus tard. Revenez maintenant à votre CLI et utilisez le docker login
commande pour se connecter à votre base de registre :
docker login registry.digitalocean.com
Vous serez invité à fournir un nom d’utilisateur et un mot de passe. Utilisez la valeur de votre jeton d’API généré pour tous les deux des champs. Docker pourra désormais interagir avec les registres DigitalOcean qui appartiennent à votre compte.
Téléchargement d’un fichier d’informations d’identification Docker
Si vous ne souhaitez pas générer de clé API ou utiliser Doctl, rendez-vous sur la page de votre tableau de bord Container Registry et cliquez sur le bouton bleu « Actions » en haut à droite. Sélectionnez « Télécharger les informations d’identification Docker » dans le menu.
Ce fichier est compatible avec Docker config.json
qui inclut les informations d’identification de votre registre. Vous pouvez soit le fusionner avec votre main ~/.docker/config.json
fichier ou utilisez le --config
drapeau avec docker
commandes :
docker --config ~/downloaded-config.json pull registry.digitalocean.com/<your-registry-name>/example-image:latest
Utilisation de Docker pour pousser et tirer des images
Avec Docker correctement configuré, vous pouvez désormais utiliser la CLI pour envoyer et extraire des images avec votre registre de conteneurs. Les images doivent être balisées au format suivant :
registry.digitalocean.com/<your-registry-name>/example-image:latest
Voici un exemple simple d’envoi d’une copie d’une image existante vers votre registre :
docker pull httpd:latest docker tag httpd:latest registry.digitalocean.com/<your-registry-name>/httpd:latest docker push registry.digitalocean.com/<your-registry-name>/httpd:latest
Accédez au tableau de bord de votre registre dans le panneau de configuration DigitalOcean. Votre image nouvellement poussée devrait apparaître dans votre registre. Vous pouvez cliquer sur l’image pour voir les balises disponibles. Supprimez une balise spécifique, ou toutes les balises disponibles pour une image, en cliquant sur l’icône des trois points à l’extrême droite et en sélectionnant dans le menu.
Collecte des ordures
La suppression d’images du registre peut laisser des couches redondantes qui ne sont plus utilisées par les manifestes restants. Ces couches seront toujours prises en compte dans vos frais de stockage.
DigitalOcean fournit une fonction de récupération de place pour supprimer les couches et les manifestes orphelins. Vous verrez une vignette sur l’écran du tableau de bord de votre registre lorsque la récupération de place pourrait libérer de l’espace de stockage. Cliquez sur « Vider la corbeille » pour commencer le processus.
Vous verrez une boîte de dialogue contextuelle qui vous permet de choisir de supprimer ou non les manifestes non balisés dans le cadre du nettoyage. Ce sont des images valides qui n’ont pas de balise attribuée, elles ne peuvent donc être référencées que par leur ID complet, comme registry.digitalocean.com/<your-registry-name>/example-image:a1bc23
. La suppression de ces manifestes est généralement souhaitable, sauf si vous les conservez intentionnellement.
Garbage Collection met votre registre en lecture seule jusqu’à ce que toutes les couches inutilisées aient été supprimées. Les nouvelles poussées seront rejetées pendant la durée du nettoyage. La collecte ne commence pas tant que les écritures existantes ne sont pas terminées, il peut donc y avoir un léger retard après le lancement du processus. La progression est affichée sur la page du tableau de bord de votre registre dans le panneau de configuration.
DigitalOcean n’offre pas de collecte automatique des ordures. Cependant, il est possible d’exécuter le processus à l’aide de Doctl et de l’API DigitalOcean afin que vous puissiez écrire votre propre script et le planifier avec cron
.
Conclusion
Le registre de conteneurs de DigitalOcean vous offre un moyen pratique de stocker des images Docker. Vous vous authentifiez auprès du registre à l’aide d’un jeton d’API DigitalOcean existant. Vous devez garder à l’esprit que les jetons d’API donnent un accès total à votre compte – ils ne se limitent pas à l’accès au registre.
Que vous deviez utiliser Container Registry en faveur de Docker Hub dépend de ce que vous ferez avec les images. Si vous comptez les déployer sur DigitalOcean, il est logique de placer vos images à côté de votre infrastructure, en maximisant les performances. Docker Hub présente cependant des avantages dans d’autres domaines, tels que les reconstructions automatiques d’images et les analyses de vulnérabilité qui peuvent rapidement signaler les problèmes de sécurité. Le service de DigitalOcean n’a ni l’un ni l’autre, se concentrant plutôt sur le stockage d’images pur et simple.