Freigeben über


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

Azure DevOps Services

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

Voraussetzungen

Kategorie Anforderungen
Azure DevOps – Ein Azure DevOps-Projekt.
– Eine Möglichkeit zum Ausführen von Pipelines auf von Microsoft gehosteten Agenten. Sie können entweder einen parallelen Auftrag erwerben oder ein kostenloses Kontingent anfordern.
- Grundkenntnisse in YAML und Azure Pipelines. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Pipeline.
- Berechtigungen:
     Benutzer, die eine Pipeline erstellen wollen, müssen Mitglied der Gruppe Mitwirkende sein, und für die Gruppe muss die Berechtigung Buildpipeline erstellen auf „Zulassen“ festgelegt sein. Mitglieder der Gruppen "Buildadministratoren" und "Projektadministratoren " können auch Pipelines verwalten.
GitHub (Englisch) - Ein GitHub-Konto .
– Eine GitHub-Dienstverbindung zum Autorisieren von Azure Pipelines.
Azurblau Ein Azure-Abonnement.

Forken des Beispielrepositorys

Wechseln Sie in Ihrem Browser zum folgenden Beispiel-Repository und forken Sie es zu Ihrem GitHub-Konto.

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 oder Pipeline erstellen aus, wenn Sie in diesem Projekt die erste Pipeline erstellen.

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

  4. Wählen Sie Ihr Repository und dann 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 Zustimmen und installieren aus.
  5. Ersetzen Sie den Inhalt von azure-pipelines.yml durch den folgenden Code. Je nachdem, ob Sie eine Linux- oder Windows-App bereitstellen, legen Sie vmImage entweder auf ubuntu-latest oder windows-latest fest.

     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, klicken Sie auf Speichern und ausführen.

  7. Wenn Sie Ihrem Repository die Datei azure-pipelines.yml hinzufügen, werden Sie aufgefordert, eine Commitnachricht hinzuzufügen. Geben Sie eine Nachricht ein und wählen Sie anschließend Speichern und ausführen aus.

Stellen Sie bei Verwendung selbst gehosteter Agents sicher, dass Docker auf dem Host des Agents installiert ist und das Docker-Modul/Daemon mit erhöhten Berechtigungen ausgeführt wird.

Docker muss auf dem Host des Agents installiert sein und die Docker-Engine/der Docker-Daemon muss mit erhöhten Rechten ausgeführt werden, damit Sie das Bild erstellen können. Führen Sie die folgenden Schritte aus, um Ihre Pipeline mithilfe des YAML-Pipeline-Editors zu erstellen.

  1. Wechseln Sie zu Ihrer Sammlung und erstellen Sie ein Projekt.
  2. Wählen Sie in Ihrem Projekt Pipelines aus.
  3. Wählen Sie Pipeline erstellen aus.
  4. Wählen Sie als Standort Ihres Quellcodes GitHub Enterprise Server aus.
  5. Wenn Sie Azure Pipelines noch autorisiert haben, eine Verbindung zu Ihrem GitHub Enterprise Server-Konto herzustellen, dann tun Sie es jetzt.
    1. Wählen Sie Verbindung zu GitHub Enterprise Server herstellen aus.
    2. Geben Sie Ihre Kontodetails ein und wählen Sie anschließend Überprüfen und speichern aus.
  6. Wählen Sie Ihr Repository aus. Wenn Sie zu GitHub umgeleitet werden, um die Azure Pipelines-App zu installieren, wählen Sie Zustimmen und installieren aus.
  7. Wählen Sie die Vorlage Ein Docker-Image erstellen aus, um Ihre Pipeline zu konfigurieren.
  8. Ersetzen Sie im YAML-Pipeline-Editor den Inhalt der YAML-Datei durch den folgenden Code. Ersetzen Sie den Poolnamen mit dem Namen des Pools, der Ihren selbstgehosteten Agent mit Docker-Funktion enthält.
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. Klicken Sie auf Speichern und ausführen.
  2. Wählen Sie auf der Seite Speichern und ausführen erneut die Option Speichern und ausführen aus.

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

Die Containerimages werden auf dem Agent erstellt und gespeichert. Übertragen Sie Ihr Image an die Google Container Registry, Docker Hub oder Azure Container Registry. Weitere Informationen finden Sie unter Image in Docker Hub oder Google Container Registry pushen oder Image in Azure Container Registry pushen.

Bereinigen von Ressourcen

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

Häufig gestellte Fragen

Welche Agents kann ich verwenden, um Containerimages zu erstellen?

  • Sie können Linux-Containerimages mit von Microsoft gehosteten Ubuntu-Agents oder selbstgehosteten Linux-basierten Agents erstellen.

  • Sie können Windows-Containerimages mit von Microsoft gehosteten Windows-Agents oder selbstgehosteten Windows-basierten Agents erstellen. Alle von Microsoft gehosteten, plattformbasierten Windows-Agents werden mit der Moby-Engine und dem -Client ausgeliefert, die für Docker-Builds benötigt werden.

  • Sie können von Microsoft gehostete macOS-Agents nicht zum Erstellen von Containerimages verwenden, da das Moby-Modul zum Erstellen der Bilder nicht auf diesen Agents vorinstalliert ist.

Weitere Informationen finden Sie unter Windows- und Linux-Agent-Optionen, die für von Microsoft gehostete Agents verfügbar sind.

Welche zwischengespeicherten Docker-Images sind auf gehosteten Agents verfügbar?

Um Zeit beim Abrufen von Docker-Images für jeden Auftrag aus der Containerregistrierung zu sparen, werden einige häufig verwendete Images auf von Microsoft gehosteten Agents vorab zwischengespeichert.

Wie lege ich die BuildKit-Variable für meine Docker-Builds fest?

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

Um Docker-Builds mit 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 selbstgehosteten Agent verwenden?

Docker muss installiert sein, und die Engine oder der Daemon müssen auf dem Host des Agents laufen. Wenn Docker nicht installiert ist, fügen Sie der Pipeline die Docker-Installationsprogrammaufgabe hinzu. Fügen Sie die Docker Installer-Aufgabe vor der Docker-Aufgabe 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 dem mit der Docker-Aufgabe erstellten Image entspricht. Intern ruft die Docker-Aufgabe die Docker-Binärdatei in einem Skript auf und fügt ein paar weitere Befehle zusammen, um weitere Vorteile zu bieten. Informieren Sie sich weiter über Docker-Aufgaben.

Kann ich das Zwischenspeichern von Ebenen während Builds in Azure Pipelines wiederverwenden?

Wenn Sie von Microsoft gehostete Agents verwenden, wird jeder Auftrag an eine neu bereitgestellte virtuelle Maschine verteilt, die auf dem von den azure-pipelines-image-generation-Repository-Vorlagen generierten Image basiert. Diese virtuellen Computer werden nach Abschluss des Auftrags bereinigt. Diese kurze Lebensdauer verhindert die erneute Verwendung dieser virtuellen Computer für nachfolgende Aufträge und die Wiederverwendung von zwischengespeicherten Docker-Ebenen. Als Problemumgehung können Sie einen mehrstufigen Build einrichten, der zwei Images generiert und diese zu einem frühen Zeitpunkt an eine Imageregistrierung pusht. Anschließend können Sie Docker mit der --cache-from-Anweisung anweisen, diese Images als Cachequelle zu verwenden.

Wenn Sie selbstgehostete Agents verwenden, können Sie Docker-Ebenen ohne Problemumgehungen zwischenspeichern, da das Problem der kurzen Lebensdauer nicht für diese Agents gilt.

Wie erstelle ich 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. Um Images für andere Architekturen (z. B. x86- oder ARM-Prozessor) zu erstellen, können Sie einen Computeremulator wie QEMU verwenden.

Führen Sie die folgenden Schritte aus, um ein ARM-Prozessorcontainerimage mit QEMU zu erstellen:

  1. Erstellen Sie Ihr Dockerfile 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 kann ich Tests ausführen und Testergebnisse für containerisierte Anwendungen veröffentlichen?

Informationen zu Optionen zum Testen containerisierter Anwendungen und zum Veröffentlichen von Testergebnissen finden Sie unter "Testergebnisse veröffentlichen".

Nächste Schritte

Nachdem Sie Ihr Containerimage erstellt haben, pushen Sie das Image an Azure Container Registry, Docker Hub oder Google Container Registry. Informationen zum Übertragen eines Images in eine Containerregistrierung finden Sie in einem der folgenden Artikel: