Schnellstart: Erstellen eines Images

Azure Pipelines

Erste Schritte mit Containerimages mithilfe Azure Pipelines zum Erstellen eines Images. Zum Erstellen eines Images müssen Sie nur eine Dockerfile-Datei in Ihrem Repository erstellen.

Sie können sowohl Linux- als auch Windows erstellen, je nachdem, welchen Agent Sie in Ihrer Pipeline verwenden. Sobald Sie ein Image erstellen, können Sie es in Azure Container Registry, Docker Hub und Google Container Registry pushen. Weitere Informationen zum Pushen von Images in Container-Registrierungen finden Sie unter Pushen eines Images.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
  • Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.
  • Ein GitHub-Repository mit einer Dockerfile-Datei. Wenn Sie kein Repository verwenden möchten, forken Sie dieses Repository, das eine Beispielanwendung und eine Dockerfile enthält:
    https://github.com/MicrosoftDocs/pipelines-javascript-docker
    

Erstellen eines Linux- oder Windows Images

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie zu Ihrem Projekt.

  2. Wechseln Sie Pipelines, und wählen Sie dann Neue Pipeline aus.

  3. Wählen GitHub als Speicherort ihres Quellcodes aus, und wählen Sie Ihr Repository aus.

    Hinweis

    Möglicherweise werden Sie zu GitHub weitergeleitet, um sich anzumelden. Geben Sie in diesem Fall Ihre Anmeldeinformationen für GitHub ein. Sie werden möglicherweise zu GitHub weitergeleitet, um die Azure Pipelines-App zu installieren. Wenn dies der Fall ist, wählen Sie Approve and install (Zustimmen und installieren) aus.

  4. Wählen Sie Starterpipeline aus. Ersetzen Sie den Inhalt von azure-pipelines.yml durch diesen Code. Wenn Sie eine Linux-App erstellen, verwenden Sie ubuntu-1604 für vmImage Ihre . Sie können für windows-latest Ihre vmImage -Windows.

            trigger:
            - main
    
            pool:
              vmImage: 'ubuntu-latest' # set to windows-latest or another Windows vmImage for Windows builds
    
            variables:
              imageName: 'pipelines-javascript-docker'
    
            steps:
            - task: Docker@2
              displayName: Build an image
              inputs:
                repository: $(imageName)
                command: build
                Dockerfile: app/Dockerfile
    

    Windows Containerimages können entweder mit von Microsoft gehosteten Windows-Agents oder mit Windows-Plattformbasierten selbstge gehosteten Agents erstellt werden (alle von Microsoft gehosteten Windows plattformbasierten Agents werden mit moby-Engine und Client ausgeliefert, die für Docker-Builds benötigt werden). Linux-Containerimages können mit von Microsoft gehosteten Ubuntu-Agents oder auf der Linux-Plattform basierenden selbstge gehosteten Agents erstellt werden. Erfahren Sie mehr über die Windows- und Linux-Agent-Optionen, die für von Microsoft gehostete Agents verfügbar sind.

    Hinweis

    Derzeit können die von Microsoft gehosteten MacOS-Agents nicht zum Erstellen von Containerimages verwendet werden, da die Moby-Engine, die zum Erstellen der Images benötigt wird, nicht auf diesen Agents vorinstalliert ist.

  5. Klicken Sie auf Speichern und ausführen. Beim Hinzufügen zu Ihrem Repository wird eine Aufforderung zum Hinzufügen einer azure-pipelines.yml Commitnachricht angezeigt. Bearbeiten Sie die Nachricht, und wählen Sie dann Speichern und erneut ausführen aus, um die Pipeline in Aktion zu sehen.

    Tipp

    Erfahren Sie mehr darüber, wie Sie das Image Azure Container Registry oder andere Containerregister wie Google Container Registry oder Docker Hub. Erfahren Sie mehr über die Docker-Aufgabe, die im obigen Beispiel verwendet wird. Anstatt die empfohlene Docker-Aufgabe zu verwenden, ist es auch möglich, Docker-Befehle direkt über einen Befehlszeilen-Task (Skript) auf aufrufen.

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiter verwenden möchten, löschen Sie Ihre Pipeline und Ihr Coderepository.

Häufig gestellte Fragen

Welche vorab zwischengespeicherten Images sind auf gehosteten Agents verfügbar?

Einige häufig verwendete Images werden auf von Microsoft gehosteten Agents vorab zwischengespeichert, um lange Zeitintervalle für das Pullen dieser Images aus der Containerregistrierung für jeden Auftrag zu vermeiden. Die Liste der vorab zwischengespeicherten Images finden Sie in den Versionshinweisen des Repositorys azure-pipelines-image-generation.

Gewusst wie Die BuildKit-Variable für meine Docker-Builds festlegen?

BuildKit führt Buildverbesserungen in den Bereichen Leistung, Speicherverwaltung, Featurefunktionalität und Sicherheit ein. Um BuildKit-basierte Docker-Builds zu aktivieren, legen Sie die DOCKER_BUILDKIT fest.

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

Hinweis

BuildKit wird derzeit nicht auf Windows unterstützt.

Wie kann ich einen selbstge gehosteten Agent verwenden?

Vor dem Erstellen eines Containerimages muss Docker auf Ihrem selbstge gehosteten Computer installiert sein. Fügen Sie den Docker-Installer-Task in Ihrer Pipeline vor dem Docker-Task hinzu, der Ihr Image erstellt.

Wie kann ich einen skriptbasierten Docker-Build erstellen, anstatt die Docker-Aufgabe zu verwenden?

Sie können den Befehl build (oder einen anderen Docker-Befehl) verwenden.

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

Mit diesem Befehl wird ein entsprechendes Image erstellt, das mit der Docker-Aufgabe erstellt wurde. Die Docker-Aufgabe selbst ruft intern die Docker-Binärdatei für ein Skript auf und heftt auch einige weitere Befehle zusammen, um einige weitere Vorteile zu bieten. Weitere Informationen finden Sie in der Docker-Aufgabendokumentation.

Ist die erneute Nutzung der Ebenenzwischenspeicherung während Builds auf Azure Pipelines?

Im aktuellen Entwurf von von Microsoft gehosteten Agents wird jeder Auftrag an einen neu bereitgestellten virtuellen Computer gesendet (basierend auf dem Image, das aus Repositoryvorlagen für die Azure-Pipelines-Imagegenerierung generiert wurde). Diese virtuellen Computer werden nach Abschluss des Auftrags bereinigt, nicht persistent und können daher für nachfolgende Aufträge nicht mehr verwendet werden. Die kurzlebigen Natur virtueller Computer verhindert die Wiederverwendung zwischengespeicherter Docker-Ebenen.

Sie können Docker-Ebenen jedoch mit selbstge gehosteten Agents zwischenspeichern, da das Problem mit der kurzlebigen Lebensdauer für diese Agents nicht anwendbar ist.

Erstellen von Linux-Containerimages für andere Architekturen als x64

Wenn Sie von Microsoft gehostete Linux-Agents verwenden, erstellen Sie Linux-Containerimages für die x64-Architektur. Zum Erstellen von Images für andere Architekturen (z. B. x86 oder ARM) können Sie einen Computeremulator wie QEMU verwenden. Die folgenden Schritte veranschaulichen das Erstellen eines ARM-Containerimages mit QEMU:

  1. Erstellen Sie Ihre Dockerfile-Datei mit einem Basisimage, das der Zielarchitektur entspricht:

    FROM arm64v8/alpine:latest
    
  2. Führen Sie das folgende Skript in Ihrem Auftrag aus, bevor Sie das Image erstellen:

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

Weitere Informationen finden Sie unter qemu-user-static auf GitHub.

Wie werden Tests ausgeführt und Testergebnisse für Containeranwendungen veröffentlicht?

Verschiedene Optionen zum Testen von Containeranwendungen und zum Veröffentlichen der resultierenden Testergebnisse finden Sie unter Veröffentlichen Testergebnisse Task.

Nächste Schritte

Im nächsten Artikel erfahren Sie, wie Sie ein Image per Push in eine Containerregistrierung pushen.