Note
Dieser Pakettyp ist möglicherweise nicht für deine Instanz verfügbar, weil Websiteadministratoren die einzelnen unterstützten Pakettypen aktivieren oder deaktivieren können. Weitere Informationen findest du unter Konfigurieren der Paketökosystemunterstützung für dein Unternehmen.
Informationen zum Docker-Support
Beim Installieren oder Veröffentlichen eines Docker-Images unterstützt die Docker-Registrierung derzeit keine fremden Ebenen wie z. B. Windows-Images.
Docker Engine v25 ist nicht kompatibel mit der Docker-Registrierung auf GitHub Enterprise Server. Es wird empfohlen, stattdessen Container registry zu verwenden. Informationen zur Migration findest du unter Migrieren zur Containerregistrierung aus der Docker-Registrierung.
Bei GitHub Packages authentifizieren
Note
GitHub Packages unterstützt nur die Authentifizierung mit einem personal access token (classic). Weitere Informationen findest du unter Verwalten deiner persönlichen Zugriffstoken.
Du benötigst ein Zugriffstoken, um private, interne und öffentliche Pakete zu veröffentlichen, zu installieren und zu löschen.
Du kannst ein personal access token (classic) für die Authentifizierung bei GitHub Packages oder bei der GitHub Enterprise Server-API verwenden. Wenn du ein personal access token (classic) erstellst, kannst du dem Token je nach Bedarf verschiedene Bereiche zuweisen. Weitere Informationen zu paketbezogenen Bereichen für ein personal access token (classic) findest du unter Informationen zu Berechtigungen für GitHub-Pakete.
Um dich bei einer GitHub Packages-Registrierung innerhalb eines GitHub Actions-Workflows zu authentifizieren, kannst du Folgendes verwenden:
GITHUB_TOKEN
, um Pakete zu veröffentlichen, die mit dem Workflowrepository verbunden sind.- Ein personal access token (classic) (diesem muss mindestens der Bereich
read:packages
zugeordnet sein), um Pakete zu installieren, die zu anderen privaten Repositorys gehören (auf dieGITHUB_TOKEN
nicht zugreifen kann)
Weitere Informationen zum GITHUB_TOKEN
, das in GitHub Actions-Workflows verwendet wird, findest du unter Automatische Tokenauthentifizierung.
Authentifizieren mit einem personal access token
Du musst ein personal access token (classic) mit den entsprechenden Bereichen verwenden, um Pakete in GitHub Packages zu veröffentlichen und zu installieren. Weitere Informationen findest du unter Einführung in GitHub-Pakete.
Du kannst sich mithilfe des Anmeldebefehls docker
bei GitHub Packages bei Docker authentifizieren.
Um die Sicherheit deiner Anmeldeinformationen zu gewährleisten, wird empfohlen, dein personal access token in einer lokalen Datei auf deinem Computer zu speichern und das Docker-Flag --password-stdin
zu verwenden, das dein Token aus einer lokalen Datei liest.
Wenn die Unterdomänenisolation für deine Instanz aktiviert ist:
cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin
Wenn die Unterdomänenisolation für deine Instanz deaktiviert ist:
cat ~/TOKEN.txt | docker login HOSTNAME -u USERNAME --password-stdin
Um diesen Beispielanmeldebefehl zu verwenden, musst du USERNAME
durch deinen GitHub Enterprise Server-Benutzernamen, HOSTNAME
durch die URL für Ihre GitHub Enterprise Server-Instance, und ~/TOKEN.txt
durch den Dateipfad zu deinem personal access token für GitHub Enterprise Server ersetzen.
Weitere Informationen findest du unter Docker-Anmeldung.
Veröffentlichen eines Images
Note
Die GitHub Packages-Docker-Registrierung wird mit einem zukünftigen Release von GitHub Enterprise Server durch die Container registry ersetzt, die verbesserte Containerunterstützung bietet.
Note
Imagenamen dürfen nur Kleinbuchstaben enthalten.
GitHub Packages unterstützt mehrere Top-Level-Docker-Images pro Repository. Ein Repository kann eine beliebige Anzahl von Imagetags aufweisen. Unter Umständen beobachtest du beim Veröffentlichen oder Installieren von Docker-Images mit mehr als 10 GB eine beeinträchtigte Dienstqualität, da Ebenen jeweils auf 5 GB gedeckelt sind. Weitere Informationen findest du unter Docker-Tag in der Docker-Dokumentation.
Nachdem Du ein Paket veröffentlicht hast, kannst Du das Paket auf GitHub ansehen. Weitere Informationen findest du unter Pakete anzeigen.
-
Bestimme den Imagenamen und die Image-ID deines Docker-Images mithilfe von
docker images
.$ docker images > < > > REPOSITORY TAG IMAGE ID CREATED SIZE > IMAGE_NAME VERSION IMAGE_ID 4 weeks ago 1.11MB
-
Tagge das Docker-Image mit der Docker-Image-ID, und ersetze dabei OWNER durch den Namen des persönlichen Kontos oder der Organisation, das bzw. die das Repository besitzt, REPOSITORY durch den Namen des Repositorys, das dein Projekt enthält, IMAGE_NAME durch den Namen des Pakets oder Images, HOSTNAME durch den Hostnamen von Ihre GitHub Enterprise Server-Instance, und VERSION durch die Paketversion zur Buildzeit.
Wenn die Unterdomänenisolation für deine Instanz aktiviert ist:
docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Wenn die Unterdomänenisolation für deine Instanz deaktiviert ist:
docker tag IMAGE_ID HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
- Wenn du noch kein Docker-Image für das Paket kompiliert hast, kompiliere das Image, indem du OWNER durch den Namen des persönlichen Kontos oder der Organisation ersetzt, das bzw. die das Repository besitzt, REPOSITORY durch den Namen des Repositorys, das dein Projekt enthält, IMAGE_NAME durch den Namen des Pakets oder Images, VERSION durch die Paketversion zur Buildzeit, HOSTNAME durch den Hostnamen von Ihre GitHub Enterprise Server-Instance, und PATH durch den Pfad zum Image, wenn es sich nicht im aktuellen Arbeitsverzeichnis befindet.
Wenn die Unterdomänenisolation für deine Instanz aktiviert ist:
docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
Wenn die Unterdomänenisolation für deine Instanz deaktiviert ist:
docker build -t HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
- Veröffentliche das Image in GitHub Packages.
Wenn die Unterdomänenisolation für deine Instanz aktiviert ist:
docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Wenn die Unterdomänenisolation für deine Instanz deaktiviert ist:
docker push HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
Note
Du musst dein Image mithilfe von IMAGE_NAME:VERSION
und nicht mithilfe von IMAGE_NAME:SHA
pushen.
Beispiel für das Veröffentlichen eines Docker-Images
In diesen Beispielen wird davon ausgegangen, dass die Unterdomänenisolation für deine Instanz aktiviert ist.
Du kannst Version 1.0 des monalisa
-Images mithilfe einer Image-ID im Repository octocat/octo-app
veröffentlichen.
$ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> monalisa 1.0 c75bebcdd211 4 weeks ago 1.11MB
# Tag the image with OWNER/REPO/IMAGE_NAME
$ 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
Du kannst ein neues Docker-Image zum ersten Mal veröffentlichen und es monalisa
nennen.
# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
# 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
Herunterladen eines Bilds
Note
Die GitHub Packages-Docker-Registrierung wird mit einem zukünftigen Release von GitHub Enterprise Server durch die Container registry ersetzt, die verbesserte Containerunterstützung bietet.
Du kannst ein Docker-Image mithilfe des Befehls docker pull
aus GitHub Packages installieren, indem du OWNER durch den Namen des persönlichen Kontos oder der Organisation ersetzt, das bzw. die das Repository besitzt, REPOSITORY durch den Namen des Repositorys, das dein Projekt enthält, IMAGE_NAME durch den Namen des Pakets oder Images, HOSTNAME durch den Hostnamen von Ihre GitHub Enterprise Server-Instance, und TAG_NAME durch das Tag für das Image, das du installieren möchtest.
Wenn die Unterdomänenisolation für deine Instanz aktiviert ist:
docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME
Wenn die Unterdomänenisolation für deine Instanz deaktiviert ist:
docker pull HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME
Note
Du musst das Image mithilfe von IMAGE_NAME:VERSION
und nicht mithilfe von IMAGE_NAME:SHA
pullen.