Übung: Erstellen und Ausführen eines Containerimages mithilfe von Azure Container Registry Tasks

Abgeschlossen

In dieser Übung verwenden Sie ACR Tasks für die folgenden Aufgaben:

  • Erstellen Sie eine Azure Container Registry-Instanz (ACR).
  • Erstellen und Pushen eines Images auf der Grundlage eines Dockerfile
  • Überprüfen der Ergebnisse
  • Ausführen des Images in ACR

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch keines haben, können Sie sich unter https://azure.com/free für eine kostenlose Testversion registrieren.

Anmelden bei Azure und Starten von Cloud Shell

  1. Melden Sie sich beim Azure-Portal an, und öffnen Sie den Cloud Shell-Dienst.

    Position der Startschaltfläche von Cloud Shell

  2. Wählen Sie nach Öffnen der Shell die Umgebung Bash aus.

    Auswählen der Bash-Umgebung

Erstellen einer Azure-Containerregistrierung

  1. Erstellen einer Ressourcengruppe für die Registrierung. Ersetzen Sie <myLocation> den folgenden Befehl durch einen Ort in ihrer Nähe.

    az group create --name az204-acr-rg --location <myLocation>
    
  2. Erstellen Sie eine Basic-Containerregistrierung. Der Registrierungsname muss innerhalb von Azure eindeutig sein und zwischen 5 und 50 alphanumerische Zeichen enthalten. Ersetzen Sie <myContainerRegistry> im folgenden Befehl durch einen eindeutigen Wert.

    az acr create --resource-group az204-acr-rg \
        --name <myContainerRegistry> --sku Basic
    

    Hinweis

    Mit dem Befehl wird eine Basic-Registrierung erstellt, eine kostenoptimierte Option für Entwickler, die sich in Azure Container Registry einarbeiten.

Erstellen und Pushen eines Images auf der Grundlage eines Dockerfile

Verwenden Sie nun Azure Container Registry, um ein Image zu erstellen und zu pushen, das auf einem lokalen Dockerfile basiert.

  1. Wechseln Sie zu einem lokalen Verzeichnis, oder erstellen Sie eines, und führen Sie dann den folgenden Befehl aus, um die Dockerfile zu erstellen. Die Dockerfile enthält nur eine Zeile, die auf das in Microsoft Container Registry gehostete Image hello-world verweist.

    echo FROM mcr.microsoft.com/hello-world > Dockerfile
    
  2. Führen Sie den Befehl az acr build aus, der das Image erstellt und nach der erfolgreichen Erstellung an Ihre Registrierung pusht. Ersetzen Sie <myContainerRegistry> durch den Namen, den Sie zuvor verwendet haben.

    az acr build --image sample/hello-world:v1  \
        --registry <myContainerRegistry> \
        --file Dockerfile .
    

    Im Folgenden sehen Sie ein verkürztes Beispiel der Ausgabe des vorherigen Befehls, das die letzten Zeilen mit den endgültigen Ergebnissen zeigt. Sie sehen, dass das Image sample/hello-word im Feld repository aufgeführt wird.

    - image:
        registry: <myContainerRegistry>.azurecr.io
        repository: sample/hello-world
        tag: v1
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      runtime-dependency:
        registry: mcr.microsoft.com
        repository: hello-world
        tag: latest
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      git: {}
    
    
    Run ID: cf1 was successful after 11s
    

Überprüfen der Ergebnisse

  1. Führen Sie den Befehl az acr repository list aus, um die Repositorys in Ihrer Registrierung aufzulisten. Ersetzen Sie <myContainerRegistry> durch den Namen, den Sie zuvor verwendet haben.

    az acr repository list --name <myContainerRegistry> --output table
    

    Ausgabe:

    Result
    ----------------
    sample/hello-world
    
  2. Führen Sie den Befehl az acr repository show-tags aus, um die Tags im Repository sample/hello-world aufzulisten. Ersetzen Sie <myContainerRegistry> durch den Namen, den Sie zuvor verwendet haben.

    az acr repository show-tags --name <myContainerRegistry> \
        --repository sample/hello-world --output table
    

    Ausgabe:

    Result
    --------
    v1
    

Ausführen des Images in ACR

  1. Führen Sie mithilfe des Befehls az acr run das Containerimage sample/hello-world:v1 aus Ihrer Containerregistrierung aus. Im folgenden Beispiel wird $Registry verwendet, um die Registrierung anzugeben, in der Sie den Befehl ausführen. Ersetzen Sie <myContainerRegistry> durch den Namen, den Sie zuvor verwendet haben.

    az acr run --registry <myContainerRegistry> \
        --cmd '$Registry/sample/hello-world:v1' /dev/null
    

    Der Parameter cmd in diesem Beispiels führt den Container in seiner Standardkonfiguration aus. cmd unterstützt jedoch zusätzliche docker run-Parameter und sogar andere docker-Befehle.

    Die folgende Beispielausgabe ist gekürzt:

    Packing source code into tar to upload...
    Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
    Sending context (1.855 KiB) to registry: mycontainerre...
    Queued a run with ID: cab
    Waiting for an agent...
    2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
    2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
    2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
    2019/03/19 19:01:53 Setting up Docker configuration...
    2019/03/19 19:01:54 Successfully set up Docker configuration
    2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
    2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
    2019/03/19 19:01:55 Launching container with name: acb_step_0
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    2019/03/19 19:01:56 Successfully executed container: acb_step_0
    2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)
    
    Run ID: cab was successful after 6s
    

Bereinigen von Ressourcen

Wenn sie nicht mehr benötigt werden, können Sie den Befehl az group delete verwenden, um die Ressourcengruppe, die Containerregistrierung und die darin gespeicherten Containerimages zu entfernen.

az group delete --name az204-acr-rg --no-wait