Soll die Azure eigene Docker registry (Service Container registry) genutzt werden, macht es wenig Sinn für jede Umgebung (dev, test, prod), jedes Team oder nach Applikationen/Systeme getrennt diese zu betreiben. Hierbei handelt es sich um ein Shared Service innerhalb eines Unternehmens, dass sich mehrere Teams teilen können.
Inhalt
(this table of content was created by Markdown Menu)
Docker Registry
In Azure heißt der Service für die Docker Registry Container registry.
Erzeugen einer neuen Container registry
Die Docker registry in Azure ist der Service Container registry. Über das Azure Portal können neue Registries hinzugefügt werden.
Registry name: Der Name der Docker registry. Die Registry ist jetzt unter “thiscontainerregistry.azurecr.io” zu erreichen.
SKU: Service Level der Registry. Diese bestimmen die Kosten, die für den Service anfallen. Siehe auch: https://azure.microsoft.com/en-us/pricing/details/container-registry/
Authentifizierung an der Container registry
Es gibt zwei Möglichkeiten der Authentifizierung gegen die Dockerregistry um Container zu pushen und zu pullen zu können.
- Managed Identities: Hiermit ist es möglich personenbezogene Zugriffe auf die Dockerregistry zu organisieren.
- admin-User: Nutzung eines zentralen admin-Nutzers. Das ist der einfachste Weg um sich gegen eine Dockerregistry zu authentifizieren.
Aktivierung des admin-Nutzers
Der admin-Nutzer kann über das Azure Portal in der Container registry aktiviert werden, dazu dort auf Access keys klicken.
Admin user: Enable. Es werden automatisch Passwörter (zwei Stück) ausgegeben.
Wichtig: Die Passwörter müssen nicht zwingend herausgeschrieben werden. Diese sind immer wieder aus dem Portal ablesbar und werden dort auch nicht maskiert.
Der Username für das Dockerlogin ist der Name der Container registry, hier im Beispiel “ThisContainerRegistry”.
Testlogin in die Container registry
Mit dem Username und einem der Passwörter kann sofort das Login getestet werden. Diese ist aus dem Internet erreichbar benötigt keine Credentials für Azure, d.h. es kann von jedem Computer mit Docker und Internetzugang getestet werden.
Nutzung der Registry
Als Beispiel kann der Standard Nginx Container in die Azure Container registry gepushed werden.
Das Docker image muss dafür neu getagged werden.
Danach kann es einfach gepushed werden.
Als Test das Image nochmal pullen
In der Container registry wird der Nginx-Container jetzt auch angezeigt. Dafür geht man in der jeweiligen Registry und wählt Repositories
Test mit Azure Web Apps
Konfiguration der Basics
Die Nutzung kann mit dem Service Azure Web App getestet werden, dem serverless Service von Azure.
Name: Der Name, den die App haben soll. Wichtig: Der Name ist gleich dem Hostname, mit dem die App aus dem Internet aufgerufen wird. Daher muss dieser
weltweit unique sein. Hier im Beispiel kann die App (bzw. der Nginx Web Server) unter thiswebapp999.azurewebsites.net
aufgerufen werden.
Publish: Docker container um einen Docker container als Web App laufen zu lassen. Die Alternative wäre, die App als Code bereitzustellen. Hier wäre aber dann ein paar Vorgaben zu erfüllen, damit die Web App funktioniert.
Operating System: Linux
Sku and size: Die SKU und die Größe bestimmt den Umfang des Service sowie die Kosten. Für einen Test ist die Free Version vollkommen ausreichend. Weitere Informationen findet man hier https://azure.microsoft.com/en-us/pricing/details/app-service/windows/
Pullen des Container innerhalb der gleichen Subscription
Wird die Web App innerhalb der eigenen Subscription erzeugt, kann der Dockercontainer direkt aus der Container registry ausgewählt werden. Eine weitere Authentifizierung ist nicht notwendig.
Image Source: Azure Container registry
Registry: thiscontainerregistry
Image: nginx
Tag: latest
Pullen des Container außerhalb der Subscription
Ein Dockercontainer kann auch bezogen werden, wenn die Web App außerhalb der Subscription erzeugt wird, in der die Container registry läuft. Dann muss die Registry genauso eingerichtet werden, wie wenn man von außerhalb von Azure die Registry nutzen möchte (s.o.).
Image Source: Private Registry
Registry: Server URL: https://thiscontainerregistry.azurecr.io
Username: ThisContainerRegistry
Password: Passwort der Admin-Nutzers (s.o.)
Image: nginx
Tag: latest
Start des Webseite
Nach ein paar Minuten, wenn der Nginx container hochgefahren wurde, kann die Nginx Standard Seite aufgerufen werden.
Diese ist unter thiswebapp999.azurewebsites.net
zu erreichen.