Envoi d’images vers des registres
Configurez des flux de travail pour envoyer vos images Docker créées vers des registres de conteneurs tels que Docker Hub ou GitHub Container Registry.
Envoi d’images vers des registres est une leçon CI/CD with GitHub Actions & DevOps Pipelines gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CI/CD with GitHub Actions & DevOps Pipelines, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Que sont les registres de conteneurs ?
Un registre de conteneurs est un service sécurisé de stockage en ligne pour vos images Docker. Considérez-le comme un espace de stockage spécialement conçu pour les paquets de votre application.
- Ils stockent différentes versions de vos images.
- Ils facilitent le partage des images avec d’autres personnes.
- Ils sont indispensables au déploiement dans divers environnements.
Pourquoi utiliser des registres ?
Les registres sont essentiels au développement logiciel moderne. Ils offrent plusieurs avantages clés :
- Partage d’images : Distribuez facilement les images de votre application.
- Gestion des versions : Stockez et gérez différentes versions de votre application.
- Déploiement fiable : Garantissez des déploiements cohérents dans tous les environnements.
- Sécurité : De nombreux registres proposent une analyse des vulnérabilités.
Services de registre courants
De nombreux services de registre de conteneurs sont disponibles. Voici deux services populaires que vous rencontrerez souvent :
- Docker Hub : Un registre public largement utilisé. Idéal pour partager des images publiques et pour les projets personnels.
- Registre de conteneurs GitHub (GHCR) : Étroitement intégré aux dépôts GitHub. Excellent pour les images privées et les organisations qui utilisent déjà GitHub.
D’autres grands fournisseurs proposent également leurs propres registres, comme AWS ECR ou le registre de conteneurs Google.
Authentification auprès d’un registre
Avant de pouvoir envoyer une image vers un registre, vous devez prouver votre identité. Ce processus est appelé authentification, ou « connexion ».
Vous fournissez généralement un nom d’utilisateur et un jeton d’accès personnel (PAT) ou un mot de passe. Ces identifiants garantissent que seuls les utilisateurs autorisés peuvent envoyer ou récupérer des images depuis vos dépôts privés.
Utiliser docker/login-action
Dans GitHub Actions, la meilleure façon de vous authentifier auprès de la plupart des registres compatibles avec Docker consiste à utiliser docker/login-action.
Cette action connecte de manière sécurisée votre flux de travail au registre indiqué, ce qui permet aux étapes suivantes d’envoyer des images. Elle accepte username et password comme entrées.
Envoyer des images vers Docker Hub
Pour envoyer une image vers Docker Hub, votre flux de travail doit :
- Se connecter : Utiliser
docker/login-actionavec votre nom d’utilisateur Docker Hub et un jeton d’accès personnel (PAT) enregistré comme secret GitHub. - Créer et envoyer : Utiliser
docker/build-push-actionpour créer votre image et définirpush: true. Vérifiez que l’étiquette de votre image inclut votre nom d’utilisateur Docker Hub, par ex.your_username/my-app:latest.
Exemple de flux de travail Docker Hub
Voici un exemple de flux de travail GitHub Actions pour créer et envoyer une image Docker vers Docker Hub. N’oubliez pas de définir DOCKER_USERNAME et DOCKER_TOKEN comme secrets GitHub dans votre dépôt.
name: Publish Docker image to Docker Hub
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/my-app:latestEnvoyer des images vers GHCR
Le registre de conteneurs GitHub (GHCR) offre une intégration transparente. Principales différences pour GHCR :
- Authentification : Vous pouvez utiliser le
GITHUB_TOKENintégré pour l’authentification. Définissezusername: ${{ github.actor }}etpassword: ${{ secrets.GITHUB_TOKEN }}. - Autorisations : Votre tâche doit disposer de l’autorisation
packages: write. - Étiquetage des images : Les images reçoivent des étiquettes au format
ghcr.io/<OWNER>/<REPOSITORY>:<TAG>.
Exemple de flux de travail GHCR
Ce flux de travail montre comment envoyer une image vers le registre de conteneurs GitHub. Remarquez le bloc permissions et le format de l’étiquette de l’image.
name: Publish Docker image to GHCR
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write # Required for GHCR
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latestVérifiez votre compréhension
Passons rapidement en revue ce que vous avez appris sur l'envoi d'images vers des registres de conteneurs.
Récapitulatif : envoyez vos images !
Excellent travail ! Vous avez appris à envoyer des images Docker vers des registres de conteneurs à l'aide de GitHub Actions.
- Les registres de conteneurs stockent et gèrent vos images Docker.
- L'authentification est une première étape essentielle qui utilise des identifiants.
docker/login-actionvous aide à vous connecter de manière sécurisée.- Vous avez vu des exemples pour Docker Hub et GitHub Container Registry, et compris leurs exigences spécifiques en matière d'authentification et d'étiquetage.
Vous allez maintenant apprendre à déployer ces images sur Kubernetes !
Questions Fréquemment Posées
La leçon « Envoi d’images vers des registres » est-elle gratuite ?
Oui — le texte complet de « Envoi d’images vers des registres » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CI/CD with GitHub Actions & DevOps Pipelines, passe à CoddyKit PRO. Le cours CI/CD with GitHub Actions & DevOps Pipelines comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Envoi d’images vers des registres » ?
Configurez des flux de travail pour envoyer vos images Docker créées vers des registres de conteneurs tels que Docker Hub ou GitHub Container Registry. Tu pratiques CI/CD with GitHub Actions & DevOps Pipelines avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer CI/CD with GitHub Actions & DevOps Pipelines ?
Aucune expérience préalable n'est requise. CI/CD with GitHub Actions & DevOps Pipelines sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Envoi d’images vers des registres » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon CI/CD with GitHub Actions & DevOps Pipelines ?
Oui. Chaque leçon CI/CD with GitHub Actions & DevOps Pipelines inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Création d’images Docker avec Actions
- Envoi d’images vers des registres
- Déploiement sur Kubernetes avec Actions
- Charts Helm et manifestes Kubernetes en intégration et déploiement continus