Remarque : GitHub Packages est actuellement en version bêta pour GitHub AE.
À propos de la prise en charge de Docker
Lors de l’installation ou de la publication d’une image Docker, le registre Docker ne prend actuellement pas en charge les couches étrangères, telles que les images Windows.
Authentification auprès de GitHub Packages
Vous avez besoin d’un jeton d’accès pour publier, installer et supprimer des packages privés, internes et publics.
Vous pouvez utiliser un personal access token pour vous authentifier sur GitHub Packages ou l’API GitHub AE. Quand vous créez un personal access token, vous pouvez l’attribuer à différentes étendues selon vos besoins. Pour plus d’informations sur les étendues liées aux packages pour un personal access token, consultez « À propos des autorisations pour les packages GitHub ».
Pour vous authentifier sur un registre GitHub Packages dans un workflow GitHub Actions, vous pouvez utiliser :
GITHUB_TOKEN
pour publier des packages associés au dépôt du workflow.- un personal access token avec au moins l’étendue
read:packages
pour installer des packages associés à d’autres dépôts privés (auxquelsGITHUB_TOKEN
ne peut pas accéder).
Pour plus d’informations sur GITHUB_TOKEN
utilisé dans les workflows GitHub Actions, consultez « Authentification par jeton automatique ».
Authentification avec un personal access token
Vous devez utiliser un personal access token avec les étendues appropriées pour publier et installer des packages dans GitHub Packages. Pour plus d’informations, consultez « Présentation de GitHub Packages ».
Vous pouvez vous authentifier auprès de GitHub Packages avec Docker à l’aide de la commande de connexion docker
.
Pour que vos informations d’identification restent sécurisées, nous vous recommandons d’enregistrer votre personal access token dans un fichier local sur votre ordinateur et d’utiliser l’indicateur --password-stdin
de Docker, qui lit votre jeton à partir d’un fichier local.
cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin
Pour utiliser cet exemple de commande de connexion, remplacez USERNAME
par votre nom d’utilisateur GitHub AE, HOSTNAME
par l’URL pour votre entreprise, et ~/TOKEN.txt
par le chemin du fichier de votre personal access token pour GitHub AE.
Pour plus d’informations, consultez « Connexion Docker ».
Publication d’une image
Remarque : Le registre Docker GitHub Packages sera remplacé dans une prochaine version de GitHub AE par le Container registry, qui offre une prise en charge améliorée des conteneurs.
Remarque : Les noms d’image doivent utiliser uniquement des lettres minuscules.
GitHub Packages prend en charge plusieurs images Docker de niveau supérieur par dépôt. Un dépôt peut contenir un nombre quelconque de balises d’image. Vous pouvez faire face à une dégradation du service lors de la publication ou de l’installation des images Docker supérieures à 10 Go, les couches étant limitées à 5 Go chacune. Pour plus d’informations, consultez « Balise Docker » dans la documentation Docker.
Après avoir publié un package, vous pouvez l’afficher sur GitHub. Pour plus d’informations, consultez « Affichage de packages ».
-
Déterminez le nom et l’ID de votre image Docker avec
docker images
.$ docker images > < > > REPOSITORY TAG IMAGE ID CREATED SIZE > IMAGE_NAME VERSION IMAGE_ID 4 weeks ago 1.11MB
-
À l’aide de l’ID d’image Docker, étiquetez l’image Docker en remplaçant OWNER par le nom du compte personnel ou de l’organisation propriétaire du dépôt, REPOSITORY par le nom du dépôt contenant votre projet, IMAGE_NAME par le nom du package ou de l’image, HOSTNAME par le nom d’hôte de votre entreprise et VERSION par la version du package au moment de la génération.
docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
-
Si vous n’avez pas encore créé d’image Docker pour le package, générez l’image en remplaçant OWNER par le nom du compte personnel ou de l’organisation propriétaire du dépôt, REPOSITORY par le nom du dépôt contenant votre projet, IMAGE_NAME par le nom du package ou de l’image, VERSION par la version du package au moment de la génération, HOSTNAME par le nom d’hôte de votre entreprise et PATH par l’image si elle ne se trouve pas dans le répertoire de travail actif.
docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
-
Publiez l’image sur GitHub Packages.
docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Remarque : Vous devez pousser votre image avec
IMAGE_NAME:VERSION
et non avecIMAGE_NAME:SHA
.
Exemple de publication d’une image Docker
Vous pouvez publier la version 1.0 de l’image monalisa
sur le dépôt octocat/octo-app
à l’aide d’un ID d’image.
$ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> monalisa 1.0 c75bebcdd211 4 weeks ago 1.11MB
# Tag the image with <em>OWNER/REPO/IMAGE_NAME</em>
$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0
# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0
Vous pouvez publier une nouvelle image Docker pour la première fois et la nommer monalisa
.
# Build the image with docker.<em>HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION</em>
# Assumes Dockerfile resides in the current working directory (.)
$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 .
# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0
Téléchargement d’une image
Remarque : Le registre Docker GitHub Packages sera remplacé dans une prochaine version de GitHub AE par le Container registry, qui offre une prise en charge améliorée des conteneurs.
Vous pouvez utiliser la commande docker pull
pour installer une image Docker à partir de GitHub Packages en remplaçant OWNER par le nom du compte personnel ou de l’organisation propriétaire du dépôt, REPOSITORY par le nom du dépôt contenant votre projet, IMAGE_NAME par le nom du package ou de l’image, HOSTNAME par le nom d’hôte de votre entreprise et TAG_NAME par l’étiquette pour l’image que vous souhaitez installer.
docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME
Remarque : Vous devez tirer l’image avec IMAGE_NAME:VERSION
et non avec IMAGE_NAME:SHA
.