Delen via


Automatiseer het bouwen en onderhouden van containerafbeeldingen met behulp van Azure Container Registry-taken.

Containers bieden nieuwe niveaus van virtualisatie door toepassings- en ontwikkelaarsafhankelijkheden te isoleren van infrastructuur- en operationele vereisten. Wat er overblijft, is de noodzaak om te bepalen hoe deze toepassingsvirtualisatie wordt beheerd en gepatcht gedurende de levenscyclus van de container.

Azure Container Registry-taken zijn een reeks functies die:

  • Bied cloudgebaseerde containerimage-bouw voor platforms zoals Linux, Windows en ARM.
  • Breid de vroege stadia van een applicatieontwikkelingscyclus uit naar de cloud met container-image builds op aanvraag.
  • Schakel geautomatiseerde builds in die worden geactiveerd door broncode-updates, updates voor de basisinstallatiekopieën van een container of timers.

Bijvoorbeeld, met triggers voor updates van een basisimage kunt u patches voor het besturingssysteem en het framework automatiseren voor uw Docker-containers. Met deze triggers kunt u veilige omgevingen onderhouden terwijl u zich houdt aan de principes van onveranderbare containers.

Belangrijk

Uitvoeringen van Azure Container Registry-taken worden tijdelijk onderbroken vanwege het gebruik van gratis Azure-credits. Deze onderbreking kan van invloed zijn op bestaande taakuitvoeringen. Als u problemen ondervindt, opent u een ondersteuningsaanvraag voor ons team om aanvullende richtlijnen te bieden.

Waarschuwing

Houd er rekening mee dat alle informatie op de opdrachtregel of als onderdeel van een URI kan worden geregistreerd als onderdeel van diagnostische tracering van Azure Container Registry (ACR). Dit omvat gevoelige gegevens, zoals referenties, persoonlijke toegangstokens van GitHub en andere beveiligde informatie. Wees voorzichtig met het voorkomen van mogelijke beveiligingsrisico's. Het is van cruciaal belang om te voorkomen dat gevoelige details in opdrachtregels of URI's worden opgenomen die onderhevig zijn aan diagnostische logboekregistratie.

Taakscenario's

Azure Container Registry-taken ondersteunen verschillende scenario's voor het bouwen en onderhouden van containerinstallatiekopieën en andere artefacten. In dit artikel worden snelle taken, automatisch geactiveerde taken en taken met meerdere stappen beschreven.

Elke taak heeft een gekoppelde broncodecontext, de locatie van bronbestanden die worden gebruikt voor het bouwen van een containerinstallatiekopieën of een ander artefact. Voorbeelden van contexten zijn een Git-opslagplaats en een lokaal bestandssysteem.

Taken kunnen ook profiteren van uitvoeringsvariabelen, zodat u taakdefinities opnieuw kunt gebruiken en tags kunt standaardiseren voor afbeeldingen en artefacten.

Snel uit te voeren taken

De ontwikkelingscyclus van de interne lus is het iteratieve proces voor het schrijven van code, het bouwen en testen van uw toepassing voordat u een broncodebeheer doorvoert. Het is echt het begin van het levenscyclusbeheer van containers.

De snelle taak-functie in Azure Container Registry-taken kunnen een geïntegreerde ontwikkelervaring bieden door uw containerimage-builds naar Azure te offloaden. U kunt een enkele containerafbeelding bouwen en pushen naar een containerregister op verzoek in Azure, zonder dat u een lokale Docker Engine-installatie nodig hebt. Denk aan docker build en docker push in de cloud. Met snelle taken kunt u uw geautomatiseerde builddefinities verifiëren en potentiële problemen ondervangen voordat u uw code doorvoert.

Met behulp van de vertrouwde docker build indeling heeft de az acr build-opdracht in de Azure CLI een context. De opdracht verzendt vervolgens de context naar Azure Container Registry en (standaard) pusht de ingebouwde installatiekopie naar het register na voltooiing.

Azure Container Registry-taken zijn ontworpen als een primitieve levenscyclus van containers. U kunt bijvoorbeeld Azure Container Registry-taken integreren in uw oplossing voor continue integratie en continue levering (CI/CD). Als u az login uitvoert met een service principal, kan uw CI/CD-oplossing vervolgens az acr build-opdrachten uitgeven om image builds te starten.

Zie de quickstart en zelfstudie voor het bouwen en implementeren van containerinstallatiekopieën met behulp van Azure Container Registry-taken voor meer informatie over het gebruik van snelle taken.

Tip

Als u rechtstreeks vanuit de broncode een image wilt bouwen en pushen, zonder de Dockerfile, biedt Azure Container Registry de opdracht az acr pack build (voorbeeld). Dit hulpprogramma bouwt en pusht een afbeelding van de broncode van de toepassing met behulp van Cloud Native Buildpacks.

Automatisch geactiveerde taken

Schakel een of meer triggers in om een image te bouwen.

Een taak activeren voor een broncode-update

U kunt een build van een containerinstallatiekopie of een taak met meerdere stappen activeren wanneer code wordt doorgevoerd of een pull-aanvraag wordt gedaan of bijgewerkt naar een openbare of persoonlijke Git-opslagplaats in GitHub of Azure DevOps. Configureer bijvoorbeeld een build-taak met de Azure CLI-opdracht az acr task create door een Git-opslagplaats en eventueel een vertakking en Dockerfile op te geven. Wanneer uw team code in de opslagplaats bijwerkt, activeert een webhook die is gemaakt in Azure Container Registry-taken een build van de containerafbeelding die in de opslagplaats is gedefinieerd.

Azure Container Registry-taken ondersteunen de volgende triggers wanneer u een Git-opslagplaats instelt als context van een taak:

Activator Standaard ingeschakeld
Committeren Ja
Pull-verzoek Nee

Notitie

Momenteel bieden Azure Container Registry-taken geen ondersteuning voor doorvoer- of pull-aanvraagtriggers in GitHub Enterprise-opslagplaatsen.

Zie Containerafbeeldingen automatisch bouwen met Azure Container Registry-taken om te leren hoe u builds kunt activeren bij broncodecommits.

Persoonlijk toegangstoken

Als u een trigger voor broncode-updates wilt configureren, moet u de taak een persoonlijk toegangstoken opgeven om de webhook in te stellen in de openbare of persoonlijke GitHub- of Azure DevOps-opslagplaats. De vereiste bereiken voor het persoonlijke toegangstoken zijn als volgt:

Type repository GitHub Azure DevOps
Openbare opslagplaats repo:status
public_repo
Code (lezen)
Privéopslagplaats opslagplaats (volledig beheer) Code (lezen)

Als u een persoonlijk toegangstoken wilt maken, raadpleegt u de GitHub - of Azure DevOps-documentatie .

Patches voor het besturingssysteem en framework automatiseren

De kracht van Azure Container Registry-taken om uw containerbuild-werkstroom te verbeteren, komt voort uit hun vermogen om een update van een basisafbeelding te detecteren. Een basisimage is een kenmerk van de meeste containerimages. Het is een parentafbeelding waarop een of meer toepassingsafbeeldingen zijn gebaseerd. Basisafbeeldingen bevatten doorgaans het besturingssysteem en soms ook toepassingsframeworks.

U kunt een Azure Container Registry-taak instellen om een afhankelijkheid van een basisimage te volgen wanneer het een toepassingsimage bouwt. Wanneer de bijgewerkte basisinstallatiekopieën naar uw register worden gepusht of een basisinstallatiekopieën worden bijgewerkt in een openbare opslagplaats, zoals in Docker Hub, kunnen Azure Container Registry-taken automatisch installatiekopieën van toepassingen bouwen op basis van deze installatiekopieën. Met deze automatische detectie en heropbouw besparen Azure Container Registry-taken u de tijd en moeite die normaal gesproken nodig zijn om elke applicatiebeeld die naar uw bijgewerkte basisafbeelding verwijst, handmatig bij te houden en bij te werken.

Zie voor meer informatie Over basisafbeeldingsupdates voor Azure Container Registry-taken en Zelfstudie: Builds van containerafbeeldingen automatiseren wanneer een basisafbeelding wordt bijgewerkt in een Azure-containerregister.

Een taak plannen

U kunt een taak plannen door een of meer timertriggers in te stellen wanneer u de taak maakt of bijwerkt. Het plannen van een taak is handig voor het uitvoeren van containerworkloads volgens een gedefinieerd schema of het uitvoeren van onderhoudsbewerkingen of tests op afbeeldingen die regelmatig naar uw registratie worden geüpload. Zie Een Azure Container Registry-taak uitvoeren volgens een gedefinieerd schema voor meer informatie.

Taken met meerdere stappen

Breid de functie voor bouwen en pushen van taken in Azure Container Registry uit met workflows in meerdere stappen die zijn gebaseerd op meerdere containers.

Taken met meerdere stappen biedt een stapsgewijze taakdefinitie en -uitvoering voor het ontwikkelen, testen en patchen van containerinstallatiekopieën in de cloud. Taakstappen die zijn gedefinieerd in een YAML-bestand, specificeren afzonderlijke bouw- en pushbewerkingen voor containerafbeeldingen of andere artefacten. Ze kunnen ook de uitvoering definiëren van een of meer containers, waarbij elke stap de container als uitvoeringsomgeving gebruikt.

U kunt bijvoorbeeld een taak met meerdere stappen maken waarmee de volgende stappen worden geautomatiseerd:

  1. Een afbeelding van een webtoepassing bouwen.
  2. Voer de webtoepassingscontainer uit.
  3. Bouw een testafbeelding voor een webtoepassing.
  4. Voer de testcontainer van de webtoepassing uit, waarmee tests worden uitgevoerd op de actieve toepassingscontainer.
  5. Als de tests zijn geslaagd, bouwt u een Archiefpakket voor Helm-grafieken.
  6. Voer een helm upgrade taak uit met behulp van het nieuwe Helm-grafiekarchiefpakket.

Met taken met meerdere stappen kunt u het bouwen, uitvoeren en testen van een image in meer samenstelbare stappen splitsen, met afhankelijkheidsondersteuning tussen stappen. Met taken met meerdere stappen in Azure Container Registry-taken hebt u gedetailleerdere controle over werkstromen voor het bouwen, testen en patchen van besturingssystemen en frameworks.

Meer informatie over het uitvoeren van build-, test- en patchtaken met meerdere stappen in Azure Container Registry-taken.

Contextlocaties

In de volgende tabel ziet u voorbeelden van ondersteunde contextlocaties voor Azure Container Registry-taken:

Contextlocatie Beschrijving Voorbeeld
Lokaal bestandssysteem Bestanden in een map in het lokale bestandssysteem. /home/user/projects/myapp
GitHub-hoofdtak Bestanden in de hoofdbranch (of een andere standaardbranch) van een openbare of persoonlijke GitHub-opslagplaats. https://github.com/gituser/myapp-repo.git
GitHub-vertakking Specifieke vertakking van een openbare of persoonlijke GitHub-opslagplaats. https://github.com/gituser/myapp-repo.git#mybranch
GitHub-submap Bestanden in een submap in een openbare of persoonlijke GitHub-opslagplaats. In het voorbeeld ziet u een combinatie van een tak- en submapspecificatie. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub-doorvoer Specifieke doorvoer in een openbare of persoonlijke GitHub-opslagplaats. Het voorbeeld toont een combinatie van een commit hash (SHA) en een submapspecificatie. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-submap Bestanden in een submap in een openbare of persoonlijke Azure-opslagplaats. Het voorbeeld toont een combinatie van tak- en submapspecificatie. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Externe tarball Bestanden in een gecomprimeerd archief op een externe webserver. http://remoteserver/myapp.tar.gz
Artefact in containerregister OCI-artefactbestanden in een containerregisteropslagplaats. oci://myregistry.azurecr.io/myartifact:mytag

Notitie

Wanneer u een Git-opslagplaats gebruikt als context voor een taak die wordt geactiveerd door een broncode-update, moet u een persoonlijk toegangstoken opgeven.

Afbeeldingsplatformen

Taken van Azure Container Registry bouwen standaard afbeeldingen voor het Linux-besturingssysteem en de AMD64-architectuur. Geef de tag op voor het --platform bouwen van Windows-installatiekopieën of Linux-installatiekopieën voor andere architecturen. Geef het besturingssysteem op en eventueel een ondersteunde architectuur in de indeling os/architectuur (bijvoorbeeld --platform Linux/arm). Geef voor ARM-architecturen desgewenst een variant op in de indeling OS/architecture/variant (bijvoorbeeld --platform Linux/arm64/v8).

Besturingssysteem Architectuur
Linux AMD64
ARM
ARM64
386
Windows AMD64

Taakuitvoer

Elke taakuitvoering genereert logboekuitvoer die u kunt controleren om te bepalen of de taakstappen zijn uitgevoerd. Wanneer u een taak handmatig activeert, wordt logboekuitvoer voor de taakuitvoering gestreamd naar de console en opgeslagen voor later ophalen. Wanneer een taak automatisch wordt geactiveerd (bijvoorbeeld door een doorvoer van broncode of een update van een basisinstallatiekopieën), worden taaklogboeken alleen opgeslagen. Bekijk de uitvoeringslogboeken in Azure Portal of gebruik de opdracht az acr task logs .

Meer informatie over het weergeven en beheren van taaklogboeken.

  • Als u klaar bent om het bouwen en onderhouden van containerafbeeldingen in de cloud te automatiseren, bekijkt u de tutorial: Containerafbeeldingen bouwen en implementeren in de cloud met taken van Azure Container Registry.

  • Optioneel vindt u meer informatie over de Docker-extensie en de Azure-accountextensie voor Visual Studio Code. U kunt deze extensies gebruiken om installatiekopieën op te halen uit een containerregister, installatiekopieën naar een containerregister te pushen of Azure Container Registry-taken uit te voeren, allemaal in Visual Studio Code.