Ich wollte die GitHub Container-Registrierung um ein Bild für mich zu hosten und hatte einige Probleme bei der Einrichtung. Um mir beim nächsten Mal etwas Zeit zu ersparen und hoffentlich auch für andere, wollte ich dokumentieren, wie dieser Prozess funktioniert.
Foto von Evgeni Tcherkasski auf Unsplash
Beta-Periode
Während der Beta-Phase wird die Nutzung der Container-Registry kostenlos sein. Open-Source- und öffentliche Repositories sind immer völlig kostenlos, aber private Repositories fallen unter die Standardabrechnungssätze für GitHub-Pakete, nachdem die Beta-Phase vorbei ist. Das kostenlose Angebot umfasst 500 MB Speicherplatz und 1 GB Transfervolumen pro Monat.
GitHub Container Registry aktivieren
Derzeit befindet sich die Registrierung in der Beta-Phase. Sie müssen also die Beta-Funktion in Ihrem Profil oder auf der Organisationsebene, auf der Sie sie verwenden möchten, aktivieren. Gehen Sie dazu zu Ihrem Profil (oder Ihrer Organisation) und gehen Sie zu Feature preview wo Sie die Funktion ein- und ausschalten können. Auf Ihrer Profilseite finden Sie außerdem eine neue Registerkarte 'Pakete'.
Vorbereiten der Übertragung des Images in die Registrierung
Derzeit ist die einzige Möglichkeit, sich bei GitHub Container Registry zu authentifizieren, die Verwendung eines GitHub Persönliches Zugangs-Token (PAT). GitHub weiß bereits, dass dies ein Problem ist, da das PAT in dem gesamten Konto verwendet werden kann, für das es erstellt wurde, und wird dies später ändern. Im Moment besteht die Empfehlung darin, ein spezielles PAT zu erstellen, das nur Rechte für die Registrierung hat, und dieses zu verwenden.
Dies sind die Bereiche, die Sie für das PAT aktivieren müssen:
- read:packages können Sie Container-Images herunterladen und deren Metadaten lesen.
- write:packages können Sie Container-Images herunterladen und hochladen sowie deren Metadaten lesen und schreiben.
Wenn Sie die Pakete löschen möchten, verwenden Sie ebenfalls diesen Bereich:
- delete:packages zum Löschen von Container-Images.
Verwenden eines GitHub-Workflows zum Erstellen und Veröffentlichen eines Images
Um ein neues Bild aus einem Workflow zu pushen, verwenden Sie das vollständige Beispiel unten.
Die verwendeten Schritte sind wie folgt:
- Holen Sie sich den Quellcode mit der Docker-Datei und allem, was Sie zum Erstellen des Images benötigen. ```` yaml
- verwendet: actions/checkout@v1 ```
- Erstellen Sie das Abbild ``` yaml
- name: Erstellen Sie das Docker-Image run: docker build -t ghcr.io/"ACCOUNT NAME"/"IMAGE NAME": "VERSION" . ```
- Die normale
docker buildSchritt, in dem ich das Bild mit dem Tag versehe, den ich in die Registrierung stellen möchte ``` yaml- name: Erstellen Sie das Docker-Image run: docker build -t ghcr.io/"ACCOUNT NAME"/"IMAGE NAME": "VERSION" . ```
- Authentifizierung mit der GitHub Container Registry Verwenden Sie die empfohlene Einrichtung aus GitHub) zur Sicherheit ``` yaml
- name: GitHub Container Registry einrichten run: echo "${{ secrets.GH_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} -passwort-stdin
5. The normal docker push step to push the container
``` yaml
- name: push to GitHub Container Registry
run: docker push ghcr.io/<<ACCOUNT NAME>>/<<IMAGE NAME>>:<<VERSION>>
Beispiel für einen vollständigen Arbeitsablauf
name: Build and Push Docker container
on:
push:
branches:
- main
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build the Docker image
run: docker build -t ghcr.io/<<ACCOUNT NAME>>/<<IMAGE NAME>>:<<VERSION>> .
- name: Setup GitHub Container Registry
run: echo "$" | docker login https://ghcr.io -u $ --password-stdin
- name: push to GitHub Container Registry
run: docker push ghcr.io/<<ACCOUNT NAME>>/<<IMAGE NAME>>:<<VERSION>>
Geheime Namen
Bitte beachten Sie, dass ich die secrets.GH_PAT um das PAT-Token, das ich verwende, in den Arbeitsablauf zu integrieren. Sie können nicht verwenden GITHUB als Präfix für den Geheimnamen, also müssen Sie das ändern. Die Benutzeroberfläche von Secrets informiert Sie nicht besonders gut darüber, was ich GitHub über das Kontaktformular mitgeteilt habe. GitHub Gemeinschaft.
Das neue Bild konsumieren
Standardmäßig werden die Bilder hinter einem Login aufbewahrt. Wenn Sie also das Bild öffentlich zugänglich machen möchten, müssen Sie das für jedes Paket tun.
Halten Sie das Bild hinter einem Login
Um das Bild hinter der Anmeldung zu verwenden, müssen Sie sich zunächst bei der Registrierung authentifizieren:
echo "$env:GH_PAT" | docker login https://ghcr.io -u USERNAME --password-stdin
Aktivieren Sie die öffentliche Registratur
Hinweis: Dies ist eine Einbahnstraße: Sie kann nicht privat gemacht werden, nachdem sie öffentlich zugänglich gemacht wurde.
So ändern Sie diese Einstellung: Gehen Sie zu dem Paket und zu seinen Einstellungen: 
Und machen Sie das Bild öffentlich zugänglich: 
Verfasst von
Rob Bos
Rob has a strong focus on ALM and DevOps, automating manual tasks and helping teams deliver value to the end-user faster, using DevOps techniques. This is applied on anything Rob comes across, whether it’s an application, infrastructure, serverless or training environments. Additionally, Rob focuses on the management of production environments, including dashboarding, usage statistics for product owners and stakeholders, but also as part of the feedback loop to the developers. A lot of focus goes to GitHub and GitHub Actions, improving the security of applications and DevOps pipelines. Rob is a Trainer (Azure + GitHub), a Microsoft MVP and a LinkedIn Learning Instructor.
Unsere Ideen
Weitere Blogs
Contact



