Zum Inhalt springen
Farbschema

Eigenes Image veröffentlichen

Nun haben wir das Image erstellt. Aktuell befindet sich dieses aber nur auf unserem eigenen Rechner. D.h. keiner, außer uns, kann dieses Image nutzen. Damit auch andere unser Image nutzen können, müssen wir dieses veröffentlichen. Dazu benötigen wir als erstes eine Container-Registry.

Container Registry ist ein zentraler Speicherort für die fertig gebauten Images. Es gibt einige Anbieter dafür, sowohl öffentlich zugängliche als auch solche, die private Images verwalten.

Die bekannteste Registry ist von der Firma Docker selbst und heißt Docker Hub. Diese erlaubt ein kostenloses privates Repository und unbegrenzt für Open Source Projekte.

Daneben bietet fast jeder größerer Cloud-Anbieter eine Container-Registry in deren Cloud-Umgebung:

und viele weitere.

Hier werden wir Docker Hub als Beispiel nutzen. Das Vorgehen mit anderen Anbietern ist oft ähnlich. Für alle können dieselben Docker-Befehle genutzt werden.

  1. Legen Sie als erstes ein Konto bei Docker Hub an, falls Sie noch keinen haben.
  2. Erstellen Sie ein neues Repository (Speicherort für Images einer Anwendung) an, z.B. blazor-movies
  3. Erstellen Sie ein “Personal Access Token”, um auf den Docker Hub einfacher zugreifen zu können (und sicherer - insbesondere in CI/CD Umgebungen).
  1. Klicken Sie auf Ihren Avatar oben rechts, um zu den “Account Settings” zu gelangen. Aufklappmenü am Avatar mit dem Eintrag „Account settings“
  2. Öffnen Sie nun im Bereich “Settings” die Einstellungen für “Personal access tokens” Eintrag „Personal access tokens“ im Bereich Settings
  3. Klicken Sie auf “Generate new token”, um einen neuen Token zu erstellen. Wählen Sie hier einen sprechenden Namen, die max. Gültigkeit des Tokens und dessen Berechtigung. Zum Veröffentlichen benötigen Sie min. Schreibrechte. Bei anderen Anbietern kann die Granularität der Berechtigungen deutlich granulärer sein. Neues Personal Access Token erstellen

Bevor das Image hochgeladen werden kann, muss dieser zuerst angepasst werden. Der Name kann nicht mehr so einfach sein, wie in unserem Fall vorher (balazor-moview). Wie wir bereits gelernt haben, sind die “einfachen” Image-Namen für offizielle Images reserviert.

Unsere Images müssen im Namen folgende Bestandteile enthalten <registry>/<vendor>/<repository>:<tag>. Hier am Beispiel unseres Basis-Images mcr.microsoft.com/dotnet/aspnet:10.0-alpine:

  • Registry: Bei Docker-Hub fällt dieser Teil weg. Bei anderen Registrys muss der Name der Registry angegeben werden (z.B. bei unserem Basis-Image ist es mcr.microsoft.com).
  • Vendor: Normalerweise Hersteller der Software oder Benutzer, der die Repositories pflegt (z.B. bei unserem Basis-Image ist es dotnet). Bei offiziellen Images auf Docker Hub entfällt auch dieser Teil.
  • Repository: Speichername für die Images einer Anwendung (z.B. bei unserem Basis-Image ist es aspnet). Dieser Teil ist immer notwendig
  • Tag: Version der Anwendung (z.B. bei unserem Basis-Image ist es 10.0-alpine). Dieser Teil ist wieder optional. Wird Tag nicht angegeben, vergibt Docker automatisch den Tag latest.

Wir müssen unser Image, das wir veröffentlichen wollen, zuerst nach der obigen Konvention umbenennen. Aus dem aktuellen Namen blazor-movies:from-alpine muss webducer/blazor-moviews:alpine werden (ersetzen Sie Benutzer- und Repository-Namen mit Ihren Werten).

Auf Docker Hub erhalten Sie einen Hinweis, wie das Image heißen soll in Form des “push” Befehls auf der Repository Startseite.

Docker-Hub-Hinweis „Docker commands“ mit dem Befehl docker push webducer/mvhs-container
Push command Hilfestellung auf der Repository Seite

Die Umbenennung des Images erfolgt durch das erneute Taggen des vorhandenen Images mit dem docker image tag Befehl.

Terminal-Fenster
docker image tag blazor-movies:from-alpine webducer/blazor-movies:alpine

Vor der Veröffentlichung müssen wir uns zuerst bei der Registry einloggen. Bei Docker Hub entfällt die Angabe der Registry. Bei allen anderen muss diese immer explizit mit angegeben werden. Das Anmelden erfolgt über den docker login Befehl (docker login <server-name> bei nicht Docker Hub Registrys). Folgen Sie dabei den Anweisungen.

Terminal-Fenster
docker login

Nun können wie unser Image veröffentlichen. Das erfolgt durch den docker push Befehl und der Eingabe des Image-Namens.

Terminal-Fenster
docker push webducer/blazor-movies:alpine

Das Veröffentlichen kann einige Zeit dauern, abhängig von der Größe des Images und Ihrer Internetverbindung. Beim push wird normalerweise nicht das ganze Image übertragen, sondern nur die “unbekannten” Schichten. Da meistens das Basis-Image bereits in Registry bekannt ist, müssen nur die Schichten oberhalb von diesen Basis-Image übertragen werden.

Docker-Hub-Repository webducer/blazor-movies mit einem Tag „alpine“ in der Tag-Liste
Repository nach Veröffentlichung
Detailansicht des Images webducer/blazor-movies mit Architektur linux/arm64, 72,46 MB und der Liste der Image-Schichten
Details des Images