Skip to main content

Arbeiten mit der Docker-Registrierung

Du kannst deine Docker-Images mithilfe der GitHub Packages-Docker-Registrierung pushen und pullen.

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 die GITHUB_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.

  1. Bestimme den Imagenamen und die Image-ID deines Docker-Images mithilfe von docker images.

    $ docker images
    > <&nbsp>
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
    
  2. 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
  1. 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
  1. 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 monalisanennen.

# 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.

Weiterführende Themen