Schnellstart: Erstellen eines Containerimages zum Bereitstellen von Apps mithilfe von Azure Pipelines

Azure DevOps Services

In dieser Schnellstartanleitung wird gezeigt, wie Sie ein Containerimage für die App-Bereitstellung mithilfe von Azure Pipelines erstellen. Um dieses Image zu erstellen, benötigen Sie eine Dockerfile-Datei in Ihrem Repository. Sie können Linux- oder Windows-Container basierend auf dem Agent erstellen, den Sie in Ihrer Pipeline verwenden.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

  • Ein GitHub-Konto. Wenn Sie keinen haben, melden Sie sich kostenlos an.

  • Ein GitHub-Repository mit einer Dockerfile. Wenn Sie kein Repository verwenden müssen, geben Sie das folgende Repository ein, das eine Beispielanwendung und eine Dockerfile-Datei 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 wechseln Sie zu Ihrem Projekt.

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

  3. Wählen Sie GitHub als Speicherort für Ihren Quellcode aus.

  4. Wählen Sie Ihr Repository aus, und wählen Sie dann die Starterpipeline aus.

    • Wenn Sie zu GitHub umgeleitet werden, um sich anzumelden, geben Sie Ihre GitHub-Anmeldeinformationen ein.
    • Wenn Sie zu GitHub umgeleitet werden, um die Azure Pipelines-App zu installieren, wählen Sie "Genehmigen" und "Installieren" aus.
  5. Ersetzen Sie den Inhalt von azure-pipelines.yml durch den folgenden Code. Basierend darauf, ob Sie eine Linux- oder Windows-App bereitstellen, stellen Sie sicher, dass sie entweder vmImageubuntu-latest oder windows-latest.

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. Wenn Sie fertig sind, wählen Sie "Speichern" und "Ausführen" aus.

    Wenn Sie die Datei azure-pipelines.yml zu Ihrem Repository hinzufügen, werden Sie aufgefordert, eine Commitnachricht hinzuzufügen.

  7. Bearbeiten Sie die Commitnachricht, und wählen Sie "Speichern" aus, und führen Sie sie erneut aus, um die Pipeline zu starten.

Weitere Informationen finden Sie in der Docker-Aufgabe , die von dieser Beispielanwendung verwendet wird. Sie können docker-Befehle auch direkt mithilfe einer Befehlszeilenaufgabe aufrufen.

Bereinigen von Ressourcen

Wenn Sie nicht beabsichtigen, diese Anwendung weiterhin zu verwenden, löschen Sie Ihr Pipeline- und Code-Repository.

Häufig gestellte Fragen

Welche Agents kann ich zum Erstellen von Containerimages verwenden?

  • Sie können Linux-Containerimages mithilfe von microsoft gehosteten Ubuntu-Agents oder plattformbasierten selbst gehosteten Linux-Agents erstellen.

  • Sie können Windows-Containerimages mithilfe von von Microsoft gehosteten Windows-Agents oder selbst gehosteten Selbsthost-Agents erstellen. Alle von Microsoft gehosteten Windows-plattformbasierten Agents werden mit dem Moby-Modul und client ausgeliefert, der für Docker-Builds benötigt wird.

  • Sie können derzeit keine von Microsoft gehosteten macOS-Agents verwenden, um Containerimages zu erstellen, da das Moby-Modul zum Erstellen der Images nicht vorinstalliert ist.

Weitere Informationen finden Sie in den Optionen für Windows- und Linux-Agent, die mit von Microsoft gehosteten Agents verfügbar sind.

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

Um lange Intervalle zu vermeiden, die diese Images für jeden Auftrag aus der Containerregistrierung ziehen, werden einige häufig verwendete Images auf microsoft-gehosteten Agents vorab zwischengespeichert. Eine Liste der verfügbaren vorab zwischengespeicherten Images finden Sie in den Versionshinweisen im Repository der Azure-pipelines-image-generation.

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

BuildKit führt Buildverbesserungen um Leistung, Speicherverwaltung, Featurefunktionalität und Sicherheit ein. BuildKit wird derzeit auf Windows-Hosts nicht unterstützt.

Um Docker-Builds mithilfe von BuildKit zu aktivieren, legen Sie die DOCKER_BUILDKIT Variable 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

Wie kann ich einen selbst gehosteten Agent verwenden?

  1. Bevor Sie Ihr Containerimage erstellen, müssen Sie Docker auf Ihrem selbst gehosteten Computer installieren.

  2. Fügen Sie in Ihrer Pipeline vor der Docker-Aufgabe , die Ihr Image erstellt, die Docker-Installationsprogrammaufgabe hinzu.

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

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

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

Mit diesem Befehl wird ein Image erstellt, das mit der Docker-Aufgabe erstellt wurde. Intern ruft die Docker-Aufgabe die Docker-Binärdatei auf einem Skript auf und sticht einige weitere Befehle zusammen, um einige weitere Vorteile zu bieten. Weitere Informationen zur Docker-Aufgabe.

Kann ich das Zwischenspeichern von Layern während builds in Azure Pipelines wiederverwenden?

Wenn Sie microsoft-gehostete Agents verwenden, wird jeder Auftrag auf einen neu bereitgestellten virtuellen Computer basierend auf dem Image bereitgestellt, das aus Azure-pipelines-Image-Generation-Repositoryvorlagen generiert wird. Diese virtuellen Computer werden nach Abschluss des Auftrags bereinigt. Diese ephemere Lebensdauer verhindert, dass diese virtuellen Computer für nachfolgende Aufträge und die Wiederverwendung zwischengespeicherter Docker-Ebenen wiederverwendet werden. Als Problemumgehung können Sie einen mehrstufigen Build einrichten, der zwei Bilder erzeugt und sie frühzeitig an eine Bildregistrierung pusht. Anschließend können Sie Docker mitteilen, diese Images als Cachequelle mit dem --cache-from Argument zu verwenden.

Wenn Sie selbst gehostete Agents verwenden, können Sie Docker-Ebenen ohne Problemumgehungen zwischenspeichern, da das ephemere Lebensdauerproblem nicht für diese Agents gilt.

Gewusst wie Linux-Containerimages für andere Architekturen als x64 erstellen?

Wenn Sie von Microsoft gehostete Linux-Agents verwenden, erstellen Sie Linux-Containerimages für die x64-Architektur. Um Bilder für andere Architekturen wie x86 oder ARM-Prozessor zu erstellen, können Sie einen Computer-Emulator wie QEMU verwenden.

Die folgenden Schritte zeigen, wie Sie ein ARM-Prozessorcontainerimage mithilfe von QEMU erstellen:

  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.

Gewusst wie Tests ausführen und Testergebnisse für containerisierte Anwendungen veröffentlichen?

Verschiedene Optionen zum Testen containerisierter Anwendungen und veröffentlichen die resultierenden Testergebnisse finden Sie unter "Veröffentlichen von Testergebnissen".

Nächste Schritte

Nachdem Sie Ihr Containerimage erstellt haben, verschieben Sie das Image auf Azure Container Registry, Docker Hub oder die Google Container-Registrierung. Um zu erfahren, wie Sie ein Image an eine Containerregistrierung pushen möchten, fahren Sie mit einem der folgenden Artikel fort: