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
Ett GitHub-konto. registrera dig kostnadsfritt om du inte redan har en.
Administratörsrollen för tjänstanslutningar i ditt Azure DevOps-projekt.
Ett Azure-konto med en aktiv prenumeration. Registrera dig kostnadsfritt om du inte redan har en.
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
Navigera till Azure-portalen.
Välj Skapa en resurs i den vänstra navigeringspanelen och välj sedan Containrar och sedan Container Registry.
Välj din prenumeration och välj sedan resursgruppen eller skapa en ny.
Ange ett registernamn för containerregistret. Registernamnet måste vara unikt i Azure och måste innehålla minst 5 tecken.
Välj önskad plats och SKU och välj sedan Granska + skapa.
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
Navigera till Azure-portalen.
Välj Skapa en resurs i den vänstra navigeringspanelen och välj sedan Virtuell dator –> Skapa.
Välj din prenumeration och välj sedan den resursgrupp som du använde för att skapa containerregistret.
Ge den virtuella datorn ett namn och välj en bild.
Ange användarnamn och lösenord och välj sedan Granska + skapa.
Granska inställningarna och välj sedan Skapa när du är klar.
Välj Gå till resurs när distributionen är slutförd.
Skapa en agentpool
I ditt Azure DevOps-projekt väljer du kugghjulsikonen för att navigera till dina Projektinställningar.
Välj Agentpooler och välj sedan Lägg till pool.
Välj Ny och välj sedan Lokalt installerad i listrutan Pooltyp .
Ge poolen ett namn och markera sedan kryssrutan Bevilja åtkomstbehörighet till alla pipelines .
Välj Skapa när du är klar.
Välj den pool som du nyss skapade och välj sedan Ny agent.
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.
Skapa en personlig åtkomsttoken
I ditt Azure DevOps-projekt väljer du Användarinställningar och sedan Personliga åtkomsttoken.
Välj Ny token för att skapa en ny personlig åtkomsttoken.
Ange ett namn på din PAT och välj sedan ett förfallodatum.
Välj Anpassad definierad i Omfattningar och välj sedan Visa alla omfång.
Välj Agentpooler -> Läsa och hantera och Distributionsgrupper -> Läs och hantera.
Välj Skapa när du är klar och spara din PAT på en säker plats.
Konfigurera en lokalt installerad agent
Anslut till den virtuella datorn i Azure Portal.
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
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")
Kör följande kommando för att börja konfigurera din agent.
.\config.cmd
Ange din server-URL när du uppmanas att ange indata. Exempel: https://dev.azure.com/fabrikamFiber
Tryck på Retur när du uppmanas att ange autentiseringstypen för att välja PAT-autentisering .
Klistra in din personliga åtkomsttoken som du skapade tidigare och tryck sedan på Retur.
Ange namnet på agentpoolen och ange sedan agentnamnet.
Lämna standardvärdet för arbetsmappen och ange sedan Y om du vill köra agenten som en tjänst.
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>
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
Gå nu tillbaka till din agentmapp och kör cmd-filen för att köra agenten på den virtuella Azure-datorn.
.\run.cmd
Din agent bör nu visas i din agentpool –> Agenter i Azure DevOps-portalen.
Konfigurera den hanterade identiteten
I Azure Portal navigerar du till den virtuella dator som du skapade tidigare.
Välj Identitet i den vänstra navigeringspanelen och aktivera sedan den systemtilldelade identiteten.
Välj Spara när du är klar och bekräfta sedan ditt val.
Välj Azure-rolltilldelningar och välj sedan Lägg till rolltilldelning.
Välj Resursgrupp i listrutan Omfång .
Välj din prenumeration och resursgrupp och välj sedan rollen AcrPush.
Upprepa steg 5 och 6 för att lägga till rollen AcrPull .
Skapa en Docker-registertjänstanslutning
I ditt Azure DevOps-projekt väljer du kugghjulsikonen för att navigera till dina Projektinställningar.
Välj Tjänstanslutningar i det vänstra fönstret.
Välj Ny tjänstanslutning och välj sedan Docker Registry och sedan Nästa.
Välj Azure Container Registry och välj sedan Hanterad tjänstidentitet som autentiseringstyp.
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 .
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.
Välj Spara när du är klar.
Skapa och publicera till Azure Container Registry
I ditt Azure DevOps-projekt väljer du Pipelines och sedan Skapa pipeline.
Välj den tjänst som är värd för din källkod (Azure Repos, GitHub osv.).
Välj lagringsplatsen och välj sedan Startpipeline.
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)
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.
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