Dela via


Skapa och publicera Docker-avbildningar i Azure Container Registry

Azure DevOps Services | Azure DevOps Server 2022

Med Hjälp av Azure Pipelines kan du konfigurera ett pipelinearbetsflöde för att skapa och publicera dina Docker-avbildningar till Azure Container Registry. I den här artikeln får du lära dig att:

  • Skapa ett Azure Container Registry
  • Konfigurera en lokalt installerad agent på en virtuell Azure-dator
  • Konfigurera den hanterade tjänstidentiteten
  • Skapa en Docker Registry-tjänstanslutning
  • Skapa och publicera avbildningen i Azure Container Registry

Förutsättningar

Hämta koden

Förgrena eller klona exempelappen för att följa med i den här självstudien.

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Skapa ett Azure Container Registry

  1. Navigera till Azure-portalen.

  2. Välj Skapa en resurs i den vänstra navigeringspanelen och välj sedan Containrar och sedan Container Registry.

  3. Välj din prenumeration och välj sedan resursgruppen eller skapa en ny.

  4. Ange ett registernamn för containerregistret. Registernamnet måste vara unikt i Azure och måste innehålla minst 5 tecken.

  5. Välj önskad plats och SKU och välj sedan Granska + skapa.

  6. Granska inställningarna och välj sedan Skapa när du är klar.

Konfigurera en virtuell agent med egen värd

Om du vill använda hanterad tjänstidentitet med Azure Pipelines för att publicera Docker-avbildningar till Azure Container Registry måste vi konfigurera en egen lokalt installerad agent på en virtuell Azure-dator.

Skapa en virtuell dator

  1. Navigera till Azure-portalen.

  2. Välj Skapa en resurs i den vänstra navigeringspanelen och välj sedan Virtuell dator –> Skapa.

  3. Välj din prenumeration och välj sedan den resursgrupp som du använde för att skapa containerregistret.

  4. Ge den virtuella datorn ett namn och välj en bild.

  5. Ange användarnamn och lösenord och välj sedan Granska + skapa.

  6. Granska inställningarna och välj sedan Skapa när du är klar.

  7. Välj Gå till resurs när distributionen är slutförd.

Skapa en agentpool

  1. I ditt Azure DevOps-projekt väljer du kugghjulsikonen kugghjulsikon för att navigera till dina Projektinställningar.

  2. Välj Agentpooler och välj sedan Lägg till pool.

  3. Välj Ny och välj sedan Lokalt installerad i listrutan Pooltyp .

  4. Ge poolen ett namn och markera sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines .

  5. Välj Skapa när du är klar.

  6. Välj den pool som du nyss skapade och välj sedan Ny agent.

  7. Vi kommer att använda anvisningarna i det här fönstret för att konfigurera din agent på den virtuella dator som du skapade tidigare. Välj knappen Kopiera för att kopiera nedladdningslänken till Urklipp.

    En skärmbild som visar hur du konfigurerar en agent.

Skapa en personlig åtkomsttoken

  1. I ditt Azure DevOps-projekt väljer du Användarinställningar och sedan Personliga åtkomsttoken.

  2. Välj Ny token för att skapa en ny personlig åtkomsttoken.

  3. Ange ett namn på din PAT och välj sedan ett förfallodatum.

  4. Välj Anpassad definierad i Omfattningar och välj sedan Visa alla omfång.

  5. Välj Agentpooler -> Läsa och hantera och Distributionsgrupper -> Läs och hantera.

  6. Välj Skapa när du är klar och spara din PAT på en säker plats.

Konfigurera en lokalt installerad agent

  1. Anslut till den virtuella datorn i Azure Portal.

  2. I en upphöjd PowerShell-kommandotolk kör du följande kommando för att ladda ned agenten.

    Invoke-WebRequest -URI <YOUR_AGENT_DOWNLOAD_LINK> -UseBasicParsing  -OutFile <FILE_PATH> 
    ##Example: Invoke-WebRequest -URI https://vstsagentpackage.azureedge.net/agent/2.213.2/vsts-agent-win-x64-2.213.2.zip -OutFile C:\vsts-agent-win-x64-2.213.2.zip
    
  3. Kör följande kommando för att extrahera och skapa din agent.

    mkdir agent ; cd agent
    Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("<FILE_PATH>", "$PWD")
    
  4. Kör följande kommando för att börja konfigurera din agent.

    .\config.cmd
    
  5. Ange din server-URL när du uppmanas att ange indata. Exempel: https://dev.azure.com/fabrikamFiber

  6. Tryck på Retur när du uppmanas att ange autentiseringstypen för att välja PAT-autentisering .

  7. Klistra in din personliga åtkomsttoken som du skapade tidigare och tryck sedan på Retur.

  8. Ange namnet på agentpoolen och ange sedan agentnamnet.

  9. Lämna standardvärdet för arbetsmappen och ange sedan Y om du vill köra agenten som en tjänst.

    En skärmbild som visar hur du konfigurerar en agent på en virtuell Azure-dator.

  10. Nu när agenten är redo att börja lyssna efter jobb ska vi installera Docker på den virtuella datorn. Kör följande kommando för att ladda ned Docker.

    Invoke-WebRequest -URI https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -OutFile <DOWNLOAD_PATH>
    
  11. Gå till nedladdningssökvägen och kör sedan följande kommando för att installera och starta Docker.

    Start-Process 'Docker%20Desktop%20Installer.exe' -Wait install
    
  12. Gå nu tillbaka till din agentmapp och kör cmd-filen för att köra agenten på den virtuella Azure-datorn.

    .\run.cmd
    
  13. Din agent bör nu visas i din agentpool –> Agenter i Azure DevOps-portalen.

    En skärmbild som visar agenten som är tillgänglig på fliken agenter.

Konfigurera den hanterade identiteten

  1. I Azure Portal navigerar du till den virtuella dator som du skapade tidigare.

  2. Välj Identitet i den vänstra navigeringspanelen och aktivera sedan den systemtilldelade identiteten.

  3. Välj Spara när du är klar och bekräfta sedan ditt val.

    En skärmbild som visar hur du aktiverar systemtilldelad identitet.

  4. Välj Azure-rolltilldelningar och välj sedan Lägg till rolltilldelning.

  5. Välj Resursgrupp i listrutan Omfång .

  6. Välj din prenumeration och resursgrupp och välj sedan rollen AcrPush.

  7. Upprepa steg 5 och 6 för att lägga till rollen AcrPull .

    En skärmbild som visar hur du konfigurerar acrpull- och push-roller.

Skapa en Docker-registertjänstanslutning

  1. I ditt Azure DevOps-projekt väljer du kugghjulsikonen kugghjulsikon för att navigera till dina Projektinställningar.

  2. Välj Tjänstanslutningar i det vänstra fönstret.

  3. Välj Ny tjänstanslutning och välj sedan Docker Registry och sedan Nästa.

  4. Välj Azure Container Registry och välj sedan Hanterad tjänstidentitet som autentiseringstyp.

  5. Ange prenumerations-ID:t Prenumerationsnamn och inloggningsservern för Azure-containerregistret. Klistra in den virtuella datorns systemtilldelade klient-ID som du skapade i föregående steg i textfältet Klientorganisations-ID .

  6. Ange ett namn för tjänstanslutningen och markera sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines . Om du vill välja det här alternativet behöver du rollen Administratör för tjänstanslutning.

  7. Välj Spara när du är klar.

    En skärmbild som visar hur du konfigurerar en MSI för docker-registertjänstens anslutning.

Skapa och publicera till Azure Container Registry

  1. I ditt Azure DevOps-projekt väljer du Pipelines och sedan Skapa pipeline.

  2. Välj den tjänst som är värd för din källkod (Azure Repos, GitHub osv.).

  3. Välj lagringsplatsen och välj sedan Startpipeline.

  4. Ta bort yaml-standardpipelinen och använd följande kodfragment:

    trigger:
    - main
    
    variables:
      dockerRegistryServiceConnection: '<SERVICE_CONNECTION_NAME>'
      imageRepository: '<IMAGE_NAME>'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
    stages:
    - stage: Build
      displayName: Build and publish stage
      jobs:
      - job: Build
        displayName: Build job
        pool:
          name: '<YOUR_AGENT_POOL_NAME>'
        steps:
        - task: DockerInstaller@0
          inputs:
            dockerVersion: '17.09.0-ce'
    
        - task: Docker@2
          displayName: Build and publish image to Azure Container Registry
          inputs:
            command: buildAndPush
            containerRegistry: $(dockerRegistryServiceConnection)
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            tags: |
              $(tag)
    
  5. När pipelinekörningen är klar kan du verifiera avbildningen i Azure. Gå till Azure Container Registry i Azure Portal och välj sedan Lagringsplatser.

    En skärmbild som visar bilden i Azure Portal.

Rensa resurser

Om du inte planerar att fortsätta använda det här programmet tar du bort resursgruppen för att undvika löpande avgifter.

az group delete --name myapp-rg