Veröffentlichen

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

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.

Docker Hub

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

Personal Access Token Erstellen

  1. Klicken Sie auf Ihren Avatar oben rechts, um zu den “Account Settings” zu gelangen.
    Flyout menu on avatar
  2. Öffnen Sie nun im Bereich “Settings” die Einstellungen für “Personal access tokens”
    Personal access tokens menu under security 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

Vorbereiten des Images

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.

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.

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

Veröffentlichen

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.

docker login

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

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.

Repository nach Veröffentlichung

Details des Images

docs