Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 11 Min.

ACR optimal nutzen

Die Azure Container Registry dient als elementares Bindeglied in containerbasierten ­Anwendungen – in AKS wie auch in eigens betriebenen Kubernetes-Umgebungen.
Azure Container Registry (kurz ACR) ist ein verwalteter Dienst, der von Microsoft selbst in Azure angeboten und betrieben wird. ACR ist eine Implementierung der Docker Registry 2.0 und erlaubt es Anwendern, Docker-Images und andere Artefakte zentral zu verwalten. Im Vergleich zu anderen Anbietern besticht die Microsoft-Implementierung durch eine nahtlose Integration in andere Azure-Dienste, leichte Administration und einfache Absicherung durch das Azure Active Directory (AAD).ACR wird in drei unterschiedlichen Ausprägungen angeboten: Basic, Standard und Premium. In Tabelle 1 finden Sie die Unterschiede der jeweiligen Editionen und deren monatliche Preise (exemplarisch für die Azure-Region Westeuropa). Natürlich müssen Sie beim Erstellen einer ACR eine entsprechende Edition auswählen, allerdings können Sie die gewählte Edition jederzeit wechseln.

Tabelle 1 – ACR-Editionen im Vergleich

Kennzahl / Edition Basic Standard Premium
Speicherplatz 10 GiB* 100 GiB* 500 GiB*
Operationen pro Minute Lesen / Schreiben 1000 / 100 3000 / 500 10 000 / 2000
Webhooks 2 10 100
Geo-Replikation Nein Nein Ja
Bandbreite Download / Upload 30 MBps / 10 MBps 60 MBps / 20 MBps 100 MBps / 50 MBps
Preis pro Monat 4,31 Euro 16,86 Euro 42,16 Euro
Die in Tabelle 1 dargestellten Angaben zum Speicherplatz stellen keine harten Limits dar. Sollten Sie in der Praxis mehr Speicherplatz konsumieren, als im jeweiligen Tarif inbegriffen ist, so wird dieser individuell nach Verbrauch abgerechnet. Falls Sie Container Build (siehe weiter unten im Artikel) verwenden, wird die hierbei verbrauchte CPU-Zeit zusätzlich abgerechnet, sofern Sie mehr als die im monatlichen Preis inbegriffenen 100 Freiminuten in Anspruch nehmen. Die hierbei anfallenden Preise und konkrete Preise für den Betrieb von ACR in anderen Azure-Regionen können Sie der offiziellen Webseite unter [1] entnehmen.Eine neue Azure Container Registry lässt sich über viele unterschiedliche Wege erstellen. Sofern Sie noch keine oder lediglich wenig Erfahrung im Umgang mit Microsoft Azure haben, können Sie das Azure Portal verwenden. Etwas flexib­ler und mächtiger sind jedoch Tools wie das Azure CLI oder das Azure PowerShell Module. In diesem Artikel werden sämtliche Automatisierungen in Azure unter Verwendung des Azure CLI in PowerShell Core 6 durchgeführt. Wie Sie das Azure CLI unter Windows installieren und zur Verwendung vorbereiten, lesen Sie im Kasten Azure-CLI-Installation unter Windows.

Azure-CLI-Installation unter Windows

Das Azure Command Line Interface (kurz Azure CLI) kann auf unterschiedlichen Betriebssystemen wie Windows, Linux oder macOS betrieben werden und stellt eine effiziente Kommunikationsschnittstelle zu Microsoft Azure dar. Sie können das Azure CLI unter Windows entweder über den MSI Installer [5] oder über ein kleines PowerShell-Skript installieren:
In vielen Umgebungen stellt die ACR einen zentralen Dienst dar, der von vielen unterschiedlichen Konsumenten verwendet wird, um Docker-Images herunterzuladen, damit Anwendungen betrieben werden können. Daher empfiehlt Microsoft in einer Sammlung von Best Practices zur ACR, den Dienst in einer dedizierten Azure Resource Group zu betreiben. Das Skript in Listing 1 erstellt entsprechend zunächst eine neue Azure Resource Group, bevor in dieser eine neue ACR in der Standard Edition angelegt wird. Sollten Sie sich für die Premium Edition von ACR entscheiden, können Sie dem Kommando az acr create auch den Namen eines eigenen Azure-Storage-Accounts übergeben, wodurch Sie individuell steuern können, wo sich der Datenspeicher Ihrer ACR befinden soll.
Listing 1: Azure Resource Group und ACR anlegen
$ACR_NAME = "dotnetpro2020" 
$RG_NAME = "dotnetpro" 

# Dedizierte Resource Group anlegen für die ACR 
az group create --name $RG_NAME --location 
  westeurope 

# Eine neue ACR-Instanz erstellen 
az acr create --name $ACR_NAME --resource-group 
  $RG_NAME --location westeurope --sku Standard 
  --admin-enabled false  

Der ACR-Admin-Account

Beim Erstellen der ACR können Sie bestimmen, ob Sie den administrativen Account aktiveren möchten oder nicht. Zu Test- und Demonstrationszwecken stellt der dedizierte Administrator-Account die einfachste Möglichkeit dar, um sich an der ACR zu authentifizieren. In Produktionsumgebungen sollten Sie den administrativen Account allerdings immer deaktivieren und stattdessen die Authentifizierung über einen separaten Service Principal (SP) oder eine Managed Service Identity (MSI) durchführen. Um den Best Practices zur ACR zu folgen, bleibt der administrative Account im Verlauf dieses Artikels deaktiviert.

Docker-Images bereitstellen und konsumieren

Die Hauptaufgabe der Azure Container Registry ist es, Docker-Images zu verwalten. Hierzu wird eine lokale Docker-Installation benötigt. Docker Desktop steht in der kostenlosen Community Edition zur Verfügung und kann auf den Betriebssystemen Windows, macOS und Linux installiert und betrieben werden. Eine entsprechende Installationsanleitung finden Sie auf der offiziellen Docker-Webseite [2].

Wichtige ACR-Kommandos

Im Laufe des Artikels haben Sie bereits einige essenzielle Kommandos des Azure CLI für den Umgang mit der Azure Container Registry kennengelernt. Hier noch einmal einige wichtige Kommandos im Überblick:
Sobald Docker auf Ihrem System installiert ist, können Sie Docker-Images vom öffentlichen Docker Hub konsumieren und nach erfolgreicher Anmeldung mit einem Docker-Account auch dort bereitstellen. Damit die lokale Docker-Installation mit der zuvor erstellten Microsoft-ACR-Instanz genutzt werden kann, müssen Sie sich lediglich an der ACR anmelden. Hierzu können Sie das Kommando az acr login verwenden. Die verwendete Variable $ACR_NAME wurde im ersten Snippet definiert und beinhaltet den Namen der zuvor erstellten ACR-Instanz:
az acr login -n $ACR_NAME 
Zur Anmeldung wird hierbei der im Azure CLI vorhandene SecurityContext verwendet. Nach erfolgreicher Anmeldung an der ACR können Sie Docker-Images auch dort bereitstellen und von dort konsumieren. Voraussetzung für die Bereitstellung in der ACR ist, dass die Docker-Images einem bestimmten Namensschema folgen. Als Beispiel wird in Listing 2 das offizielle NGINX-Webserver-Image vom öffentlichen Docker Hub heruntergeladen, umbenannt und abschließend auf die eigene ACR hochgeladen.
Listing 2: Docker-Image laden
# Offizielles Docker-Image von Docker Hub 
# herunterladen 
docker pull nginx:latest 

# Docker-Image umbenennen, um individuelles Präfix 
# sicherzustellen 
docker tag nginx:latest dotnetpro2020/nginx:1 

# Auflistung aller lokalen Docker-Images anzeigen 
docker images 

# Docker-Image auf privater ACR bereitstellen 
docker push dotnetpro2020/nginx:1  
Eine Liste sämtlicher Docker-Images, die sich aktuell auf der ACR-Instanz befinden, erhalten Sie durch das Kommando az acr repository list. Alternativ können Sie an dieser Stelle das Azure Portal besuchen und die Docker-Images direkt im Portal durchsuchen. Hierzu navigieren Sie zu Ihrer ACR-Instanz und öffnen den Reiter Repositories, wie in Bild 1 gezeigt.
Docker-Imagesin der ACR(Bild 1) © Autor
Das Kommando az acr repository bietet noch mehr Möglichkeiten, um existierende Images in der ACR zu verwalten. So können Sie beispielsweise mit az acr repository delete Docker-Images löschen oder sich mit az acr repository show-tags sämtliche Tags eines Docker-Images auflisten lassen. Eine Auflistung aller Kommandos zur Administration von Docker-Images in ACR erhalten Sie mit az acr repository --help.

ACR in AKS nutzen

Falls Sie den Azure Kubernetes Service (kurz AKS) verwenden, können Sie diesen mit der ACR verbinden, um private Docker-Images von der geschützten Container Registry zu konsumieren. Die Produktteams haben im Jahr 2019 die Integration der beiden Dienste aus administrativer Sicht weiter vereinfacht. So können Sie die zu verwendende ACR entweder direkt bei der Erstellung der AKS-Instanz angeben, wie es in Listing 3 zu sehen ist. Möchten Sie eine ACR an einen bereits existierenden AKS anbinden, so realisieren Sie dies über das Kommando az aks attach-acr wie folgt:
Listing 3: ACR mit AKS verbinden
$AKS_NAME = "dotnetpro2020" 
$ACR_NAME = "dotnetpro2020" 
$AKS_RESOURCE_GROUP = "dotnetpro-aks" 

# Neue Resource Group für AKS erstellen 
az group create --name $AKS_RESOURCE_GROUP 
  --location westeurope 

# Id der ACR abrufen 
$ACR_ID = az acr show --name $ACR_NAME -o tsv 
  --query id 

# AKS erstellen und ACR direkt damit verknüpfen 
az aks create --resource-group $AKS_RESOURCE_GROUP 
  --name $AKS_NAME --attach-acr $ACR_ID --node-count
  1 --enable-addons monitoring --generate-ssh-keys  
$ACR_ID = az acr show --name $ACR_NAME -o tsv --query id 
az aks update --name $AKS_NAME --resource-group $AKS_RG 
  --attach-acr $ACR_ID 
Nachdem die ACR mit AKS verbunden wurde, können Sie in gängigen Kubernetes-Artefakten wie Pods, ReplicaSets oder Deployments auf private Images aus der ACR zugreifen. Um ein neues Deployment in AKS zu erstellen, verwenden Sie das initial erstellte NGINX-Image von der privaten ACR in folgender Weise:
kubectl create namespace dotnetpro1 

kubectl create deployment dotnetpro --image dotnetpro
  2020.azurecr.io/nginx:latest --namespace dotnetpro1 

ACR in Kubernetes nutzen

Sie können die Azure Container Registry in jeder Kubernetes-Installation verwenden. Hierzu müssen Sie die Verbindung zur ACR innerhalb des Clusters erstellen. In Kubernetes gibt es dafür zwei unterschiedliche Wege.Die einfachste Integration lässt sich über ein Kubernetes-Secret bewerkstelligen. Hierbei werden sämtliche Informationen zur Authentifizierung an der ACR im Secret gespeichert. Dieses Secret ist anschließend in jedem Kubernetes-Objekt anzugeben, das Images von ACR herunterladen soll. Der Zugriff auf die ACR wird in den folgenden Beispielen über einen neuen Service Principal realisiert. Sie erstellen den Service Principal und berechtigen diesen auf die ACR durch:
$ACR_ID = az acr show --name dotnetpro2020 -o tsv 
  --query id 
$SP = az ad sp create-for-rbac --name dotnetpro2020 
  --skip-assignment -o json 
$SP_ID = $SP | ConvertFrom-Json | Select-Object appId 
$SP_PASSWORD = $SP | ConvertFrom-Json | Select-Object 
  password 
az role assignment create --role Reader --scope $ACR_ID 
  --assignee $SP_ID  
Anschließend können Sie mit dem Befehl kubectl create namespace dotnetpro2 einen isolierten Bereich im Cluster für dieses Beispiel erstellen. Das benötigte Secret lässt sich mithilfe von kubectl erstellen und im Namespace dotnetpro2 bereitstellen.
kubectl create secret docker-registry acr-secret 
  --docker-username= 
  --docker-password= 
  --docker-email= 
  --docker-server=dotnetpro2020.azurecr.io 
  --namespace dotnetpro2 
Die Definition für einen exemplarischen Pod können Sie sich ebenfalls von kubectl erstellen lassen, allerdings müssen Sie danach die Referenz auf das Secret manuell in das Pod-Manifest einfügen:
kubectl run dotnetproweb 
  --image dotnetpro2020.azurecr.io/nginx:latest  
  --port 80 --restart=Never --namespace $KUBE_NS 
  --dry-run -o yaml > dotnetpro_pod.yml 
Nachdem die Definition erstellt wurde, stellen Sie sicher, dass diese der Definition aus Listing 4 entspricht. Haben Sie die Anpassungen vorgenommen, können Sie den Pod mit kubectl apply -f dotnetpro_pod.yml in Kubernetes bereitstellen.
Listing 4: Definition für einen exemplarischen Pod
apiVersion: v1 
kind: Pod 
metadata: 
  creationTimestamp: null 
  labels: 
    run: dotnetproweb 
  name: dotnetproweb 
  namespace: dotnetpro2 
spec: 
  containers: 
    - image: dotnetpro2020.azurecr.io/nginx:latest 
      name: dotnetproweb 
      ports: 
        - containerPort: 80 
      resources: {} 
  dnsPolicy: ClusterFirst 
  restartPolicy: Never 
  imagePullSecrets: 
    - name: acr-secret 
status: {}  
Alternativ dazu bewerkstelligen Sie die Verbindung zwischen ACR und Kubernetes durch eine Kombination aus Service-Account und Secret. Anstatt das Image-Pull-Secret auf den Pods oder Deployments anzugeben, können Sie einen Service-Account dazwischenschalten und diesem Account das Image-Pull-Secret zuweisen. Sämtliche Pods, die diesen Service-Account verwenden, sind somit in der Lage, automatisch Docker-Images von der ACR anhand der im Secret gespeicherten Authentifizierungsinformationen zu laden.Listing 5 zeigt die Definition eines Namespace, des Secrets, des Service-Accounts und eines Pods, der den Service-Account verwendet. Sie können sämtliche Artefakte über das Kommando kubectl apply -f all-in-one.yml in Kubernetes bereitstellen.
Listing 5: Weitere Definitionen
apiVersion: v1 
kind: Namespace 
metadata: 
  name: dotnetpro3 
--- 
apiVersion: v1 
data: 
  .dockerconfigjson: eyJhdXRocyI6eyJ0aGhkZXYuYXp1cm
    Vjci5pbyI6eyJ1c2VybmFtZSI6IjE4Y2Y2NWM0LTIxYzItN
    GQ3MS04MDVkLWI1Mzg4MzI5NGI5MyIsInBhc3N3b3JkIjoi
    YWUxNDBhZGUtYTVhNy00NzM1LWIwNDAtNThkMDY4YzcwNmQ
    2IiwiZW1haWwiOiJ0aG9yc3Rlbi5oYW5zQG91dGxvb2suY2
    9tIiwiYXV0aCI6Ik1UaGpaalkxWXpRdE1qRmpNaTAwWkRje
    ExUZ3dOV1F0WWpVek9EZ3pNamswWWprek9tRmxNVFF3WVdS
    bExXRTFZVGN0TkRjek5TMWlNRFF3TFRVNFpEQTJPR00zTUR
    aa05nPT0ifX19 
kind: Secret 
metadata: 
  name: acr-secret 
  namespace: dotnetpro3 
type: kubernetes.io/dockerconfigjson 
--- 
apiVersion: v1 
kind: ServiceAccount 
metadata: 
  name: sadotnetpro 
  namespace: dotnetpro3 
imagePullSecrets: 
  - name: acr-secret 
--- 
apiVersion: v1 
kind: Pod 
metadata: 
  labels: 
    run: dotnetproweb 
  name: dotnetproweb 
  namespace: dotnetpro3 
spec: 
  serviceAccountName: sadotnetpro 
  containers: 
    - image: dotnetpro2020.azurecr.io/nginx:latest 
      name: dotnetproweb 
      ports: 
        - containerPort: 80  

Container Build – lagern Sie das Erstellen von Docker-Images aus

Falls Sie keine lokale Docker-Installation haben oder wenn Sie das Erstellen der Docker-Images an die ACR auslagern möchten, können Sie ACR Container Build verwenden. In der einfachsten Form laden Sie den notwendigen Quellcode hierzu in die ACR hoch und instruieren diese, ein Docker-Image zu erstellen.Listing 6 zeigt exemplarisch das Erstellen eines kleinen neuen Projekts: Ein Dockerfile wird von GitHub in das neue Projektverzeichnis heruntergeladen und durch az acr build in der ACR-Instanz in ein Docker-Image verwandelt. Abschließend wird das Docker-Image auf das lokale System heruntergeladen und durch docker run einmalig ausgeführt.
Listing 6: Neues Projekt erstellen
$PROJECT_FOLDER = ".\container-build" 
If(!(test-path $PROJECT_FOLDER)) 
{ 
  New-Item -ItemType Directory -Force -Path 
    $PROJECT_FOLDER 
} 
cd $PROJECT_FOLDER 

Invoke-WebRequest -Uri https://raw.githubusercontent
  .com/ThorstenHans/acr-samples/master/
  containerbuild/Dockerfile -OutFile Dockerfile 

az acr build --registry dotnetpro2020 --image 
  dotnetpro2020.azurecr.io/cowsay:1 . 

docker pull dotnetpro2020.azurecr.io/cowsay:1 

docker run dotnetpro2020.azurecr.io/cowsay:1  
Bitte beachten Sie, dass Container Build auf Sekunden­basis abgerechnet wird, daher sollten Sie die hierbei anfallenden Kosten in Ihre Kostenplanung aufnehmen, um transparent planen zu können, welche Kosten durch die Verwendung der ACR pro Monat anfallen können.

Container Build mithilfe von ACR-Tasks ­automatisieren

Mit ACR-Tasks ist es möglich, den zuvor kennengelernten Container Build zu automatisieren. Hierbei kann das Erstellen des Docker-Images von unterschiedlichen Quellen ausgelöst werden. So können Sie beispielsweise eine neue Version Ihres Images erstellen lassen, sobald
  • ein neues Commit in einem Git-Repository bereitgestellt wurde,
  • ein Basis-Docker-Image in einer neuen Version bereitgestellt wurde,
  • ein zeitliches Intervall eingetreten ist (beispielsweise jede Nacht um 3:00 Uhr),
  • eine externe Quelle ein Ereignis ausgelöst hat (Webhook).
Exemplarisch möchte ich mit Ihnen einen Nightly Build für das NGINX-Image konfigurieren, der jede Nacht um 4:00 Uhr eine neue Version des Docker-Images erstellt und in der ACR persistiert:
az acr task create --image dotnetpro2020.azurecr.io/cowsay:nightly-{{.Run.ID}} 
  --name nightly-image-build --registry dotnetpro2020 
  --schedule "0 4 * * *" --file Dockerfile 
  –-base-image-trigger-enabled false 
  --commit-trigger-enabled false 
  --context https://github.com/ThorstenHans/acr-samples.
    git#master:containerbuild 
Nachdem der Task in der ACR erstellt wurde, können Sie diesen auch direkt manuell ausführen, um sicherzustellen, dass die Konfiguration Ihren Ansprüchen entspricht und das erwartete Resultat liefert. Hierzu verwenden Sie das folgende Kommando:
az acr task run --name nightly-image-build --registry 
  dotnetpro2020 
Sie können auch die gesamte Historie eines ACR-Tasks auflisten lassen. Mit az acr task list-runs erhalten Sie eine Liste sämtlicher Ausführungen eines bestimmten ACR-Tasks.
az acr task list-runs --name nightly-image-build 
  --registry dotnetpro2020 --output table 
Schlussendlich können Sie einen ACR-Task wieder löschen, indem Sie das Kommando az acr task delete verwenden.

Integrationen mit ACR-Webhooks

Durch ACR-Webhooks lassen sich externe Systeme ansteuern, sobald Ereignisse in der ACR auftreten. Diesen Mechanismus können Sie beispielsweise verwenden, um Continuous Deployment (kurz CD) mit Azure DevOps zu realisieren oder um Integration in kollaborativen Tools wie Microsoft Teams oder Slack abzubilden.Die Integrationsmöglichkeiten mit ACR-Webhooks sind nahezu unbegrenzt: Möchten Sie auf neu bereitgestellten Docker-Images ein eigenes System benachrichtigen? Dies können Sie einfach realisieren, indem Sie einen Webhook für eine individuelle Azure Function registrieren.
az acr webhook create --registry dotnetpro2020 
  --name dotnetprowebhook 
  --actions push 
  --uri https://dotnetproacrwebhook.azurewebsites.net/
    api/IncomingWebhook 
Zur Veranschaulichung werden Sie einen neuen Webhook registrieren, der eine bereits bereitgestellte Azure Function aufruft, sobald eine neue Version des NGINX-Docker-Images in der ACR bereitgestellt wird. Den Quellcode der Azure Functions finden Sie unter [3].Sie können den Webhook auch testen: Öffnen Sie hierzu das Azure Portal und navigieren Sie zu Ihrer ACR-Instanz. In der Registerkarte Webhooks finden Sie sämtliche bestehenden Webhooks. Wählen Sie den zuvor erstellten Webhook aus und betätigen Sie die Ping-Schaltfläche. Sie sollten nun den HTTP-Antwortcode 200 in der korrespondierenden Spalte sehen. Alternativ können Sie den Webhook triggern, indem Sie eine neue Version des NGINX-Docker-Images bereitstellen:
docker tag dotnetpro2020.azurecr.io/nginx:1  
  dotnetpro2020.azurecr.io/nginx:2 
docker push dotnetpro2020.azurecr.io/nginx:2 
Nachdem der Push-Vorgang abgeschlossen ist, öffnen Sie die Adresse https://dotnetproacrwebhook.azurewebsites.net/api /listinvocations im Browser und betrachten die daraus resultierenden Ergebnisse.Existierende Webhooks können Sie über das Azure CLI löschen. Um den zuvor erstellten Webhook wieder zu entfernen, führen Sie das folgende Kommando aus:
az acr webhook delete --name dotnetprowebhook --registry 
  dotnetpro2020 
Bei ACR-Webhooks sollten Sie beachten, dass je nach gewählter ACR-Edition nur eine bestimmte Anzahl von Webhooks zur Verfügung steht.

ACR-Metriken in Azure Monitor

Eines der neueren Features ist die Integration von Diagnose- und Zugriffslogs in Azure Log Analytics und somit Azure Monitor [4]. Das Feature befand sich November 2019 noch im Preview-Status, kann allerdings auf jeder ACR-Instanz (unabhängig von der gewählten Edition) konfiguriert werden. Mit der Integration in Azure Monitor erhalten Sie essenzielle Einblicke in die Verwendung der ACR an zentraler Stelle.Um die Integration zu konfigurieren, benötigen Sie einen Log Analytics Workspace. Sollten Sie noch keinen Workspace haben, können Sie einen neuen Workspace mit dem folgenden Kommando erstellen:
Invoke-WebRequest -Uri 
  https://raw.githubusercontent.com/
  ThorstenHans/acr-samples/master/azure-
  monitor-integration/log-analytics-workspace-
  definition.json -OutFile 
  dotnetproworkspace.json 
az group deployment create --resource-group 
  dotnetpro --template-file 
  dotnetproworkspace.json 
Im ersten Schritt wird das Deployment-Manifest von GitHub durch das PowerShell-Cmdlet Invoke-WebRequest heruntergeladen, anschließend wird das Deployment für den Log Analytics Workspace über das Azure CLI angestoßen.Die Integration zwischen ACR und dem Log Analytics Workspace lässt sich natürlich auch über das Azure CLI konfigurieren. Zur einfacheren Veranschaulichung wird die Definition der Diagnoseeinstellungen hier allerdings über das Azure Portal vorgenommen.Navigieren Sie hierzu im Azure Portal zu Ihrer ACR-Instanz und rufen Sie die Registerkarte Monitoring | Diagnostic settings auf (Bild 2). Hier können Sie über die Schaltfläche Add diagnostic setting die Integration konfigurieren.
ACR Diagnostic Settingsangeben(Bild 2) © Autor
Sobald entsprechende Ereignisse mindestens einmalig aufgetreten sind, stellt die ACR die folgenden Metriken bereit:
  • ContainerRegistryLoginEvents (Metriken über Authentifizierung an der ACR)
  • ContainerRegistryRepositoryEvents (Operationsmetriken wie Push und Pull von Images)
  • AzureMetrics (Aggregierte Metriken der ACR wie ACR-Task-Laufzeiten und andere)
Sie können diese Metriken in Azure Monitor durch eine ­einfache Abfrage einsehen. Bild 3 zeigt einige Metriken aus der im Laufe des Artikels verwendeten ACR-Instanz direkt in Azure Monitor.
ACR-Logsder verwendeten ACR-Instanz in Azure Monitor(Bild 3) © Autor

Fazit

Mit der Azure Container Registry bietet Microsoft einen einfachen, jedoch sehr wichtigen zentralen Dienst für containerbasierte Szenarien an.Bereits seit dem initialen Release der ACR hat Microsoft kontinuierlich neue Features in der Azure Container Regis­try hinzugefügt, um den täglichen Workflow für Softwareentwickler einfacher und effizienter zu gestalten.Im direkten Vergleich zu anderen Implementierungen des Docker-Registry-2.0-Standards besticht die ACR durch ebendiese zusätzlichen Features und darüber hinaus durch die einfache Administration mittels Azure CLI, dem Azure Power­Shell Module und dem Azure Portal. Außerdem ist die Integration in andere Azure-Dienste wie AKS oder Azure App Services problemlos möglich.
Projektdateien herunterladen

Fussnoten

  1. Azure Container Registry pricing, http://www.dotnetpro.de/SL2005ACR1
  2. Docker-Installationsanleitung, http://www.dotnetpro.de/SL2005ACR2
  3. Quellcode der Azure Functions, http://www.dotnetpro.de/SL2005ACR3
  4. Azure Monitor, http://www.dotnetpro.de/SL2005ACR4
  5. MSI Installer für Azure CLI, http://www.dotnetpro.de/SL2005ACR5

Neueste Beiträge

Spotlight #1: Azure IoT Operations, Video Teil 2/3 - DWX Spotlight
Das erste DWX Spotlight mit Special Guest Florian Bader. Im Teil 2 des Videos erklärt Florian unter anderem, wie es mit der Sicherheit bei Industrieanlagen und Messdatenerfassung aussieht.
2 Minuten
10. Jul 2025
KI lässt Entwickler ihre Leidenschaft zum Programmieren neu entdecken - Motivation
Softwareentwicklung ist gleich Spaßfreie Zone? Das muss nicht sein: Der Beitrag beleuchtet, wie Teams ihren Kopf wieder freibekommen und ihre Freude am Entwickeln neu entdecken.
5 Minuten
10. Jul 2025
Miscellaneous

Das könnte Dich auch interessieren

Sicher ist sicher - Azure DevOps Pipelines Security
Als integraler Bestandteil der Entwicklungsumgebung ist Azure DevOps Pipelines oft Ziel von Angriffen. Da ist es gut zu wissen, wo die Schwachstellen des Systems liegen.
14 Minuten
16. Jun 2025
GitHub Actions lokal ausführen - Automation
Schnelle Rückmeldung erwünscht: So führen Sie GitHub Actions lokal aus.
2 Minuten
16. Jun 2025
CI/CD mit YAML-Pipelines - versionierte und wartbare CI/CD-Automatisierung in Azure DevOps
Mit den YAML-Pipelines bietet Azure DevOps eine umfangreiche Funktionalität für die Build- und Release-Automatisierung. Das Wichtigste im Überblick.
13 Minuten
14. Nov 2022
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige