Quickstart: Een containerinstallatiekopieën bouwen en uitvoeren met behulp van Azure Container Registry Tasks

In deze quickstart gebruikt u Azure Container Registry Tasks-opdrachten om snel een Docker-containerinstallatie kopie in Azure te bouwen, te pushen en uit te voeren, zonder een lokale Docker-installatie. ACR-taken is een reeks functies in Azure Container Registry die u helpen bij het beheren en wijzigen van containerinstallatiekopieën gedurende de levenscyclus van de container. In dit voorbeeld ziet u hoe u de ontwikkelingscyclus voor de containerinstallatiekopie in de vervolglus naar de cloud kunt offloaden met on-demand builds met behulp van een lokale Dockerfile.

Na deze quickstart kunt u meer geavanceerde functies van ACR-taken verkennen met de zelfstudies. Met ACR-taken kunnen onder meer installatiekopieën worden geautomatiseerd op basis van codedoorvoeringen of updates van basisinstallatiekopieën of meerdere containers parallel worden getest.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor deze quickstart is versie 2.0.58 of hoger van de Azure-CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een brongroep maken

Als u nog geen containerregister hebt, maakt u eerst een nieuwe resourcegroep met de opdracht az group create. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

az group create --name myResourceGroup --location eastus

Een containerregister maken

Maak een containerregister met de opdracht az acr create. De registernaam moet uniek zijn binnen Azure en mag 5 tot 50 alfanumerieke tekens bevatten. In het volgende voorbeeld wordt mycontainerregistry008 gebruikt. Werk deze waarde bij naar een unieke waarde.

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry008 --sku Basic

In dit voorbeeld maakt u een Basic-register. Dit is een voor kosten geoptimaliseerde optie voor ontwikkelaars die meer willen leren over Azure Container Registry. Zie Servicelagen voor Container Registry voor meer informatie over de beschikbare servicelagen.

Een installatiekopie bouwen en pushen vanaf een Dockerfile

Gebruik nu Azure Container Registry om een installatiekopie te maken en pushen. Maak eerst een lokale werkmap en maak vervolgens een Dockerfile met de naam Dockerfile met één regel: FROM mcr.microsoft.com/hello-world. Dit is een eenvoudig voorbeeld van het bouwen van een Linux-containerinstallatiekopie vanuit de hello-world-installatiekopie in Microsoft Container Registry. U kunt uw eigen standaard Dockerfile maken en installatiekopieën bouwen voor andere platforms. Als u met een bash-shell werkt, maakt u de Dockerfile met de volgende opdracht:

echo "FROM mcr.microsoft.com/hello-world" > Dockerfile

Voer de opdracht az acr build uit, waarmee de installatiekopie wordt gemaakt. Nadat de installatiekopie is gemaakt, wordt deze naar uw register gepusht. In het volgende voorbeeld wordt de sample/hello-world:v1-installatiekopie gemaakt en gepusht. Met de . aan het einde van de opdracht wordt de locatie van de Dockerfile ingesteld, in dit geval de huidige map.

az acr build --image sample/hello-world:v1 \
  --registry mycontainerregistry008 \
  --file Dockerfile . 

De uitvoer van geslaagd bouwen en pushen is vergelijkbaar met de volgende:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/build_archive_b0bc1e5d361b44f0833xxxx41b78c24e.tar.gz'...
Sending context (1.856 KiB) to registry: mycontainerregistry008...
Queued a build with ID: ca8
Waiting for agent...
2019/03/18 21:56:57 Using acb_vol_4c7ffa31-c862-4be3-xxxx-ab8e615c55c4 as the home volume
2019/03/18 21:56:57 Setting up Docker configuration...
2019/03/18 21:56:58 Successfully set up Docker configuration
2019/03/18 21:56:58 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Executing step ID: build. Working directory: '', Network: ''
2019/03/18 21:56:59 Obtaining source code and scanning for dependencies...
2019/03/18 21:57:00 Successfully obtained source code and scanned for dependencies
2019/03/18 21:57:00 Launching container with name: build
Sending build context to Docker daemon  13.82kB
Step 1/1 : FROM mcr.microsoft.com/hello-world
latest: Pulling from hello-world
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586fxxxx21577a99efb77324b0fe535
Successfully built fce289e99eb9
Successfully tagged mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:01 Successfully executed container: build
2019/03/18 21:57:01 Executing step ID: push. Working directory: '', Network: ''
2019/03/18 21:57:01 Pushing image: mycontainerregistry008.azurecr.io/sample/hello-world:v1, attempt 1
The push refers to repository [mycontainerregistry008.azurecr.io/sample/hello-world]
af0b15c8625b: Preparing
af0b15c8625b: Layer already exists
v1: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
2019/03/18 21:57:03 Successfully pushed image: mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:03 Step ID: build marked as successful (elapsed time in seconds: 2.543040)
2019/03/18 21:57:03 Populating digests for step ID: build...
2019/03/18 21:57:05 Successfully populated digests for step ID: build
2019/03/18 21:57:05 Step ID: push marked as successful (elapsed time in seconds: 1.473581)
2019/03/18 21:57:05 The following dependencies were found:
2019/03/18 21:57:05
- image:
    registry: mycontainerregistry008.azurecr.io
    repository: sample/hello-world
    tag: v1
    digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/hello-world
    tag: v1
    digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
  git: {}

Run ID: ca8 was successful after 10s

De installatiekopie uitvoeren

Voer nu snel de installatiekopie die u hebt gemaakt en naar het register hebt gepusht uit. Hier gebruikt u az acr run om de containeropdracht uit te voeren. In de ontwikkelwerkstroom van de container kan dit een validatiestap zijn voordat u de installatiekopie implementeert. U kunt de opdracht ook opnemen in een YAML-bestand van meerdere stappen.

In het volgende voorbeeld wordt $Registry gebruikt om het eindpunt van het register op te geven waarin u de opdracht uitvoert:

az acr run --registry mycontainerregistry008 \
  --cmd '$Registry/sample/hello-world:v1' /dev/null

Met de parameter cmd in dit voorbeeld wordt de container in de standaardconfiguratie uitgevoerd, maar cmd biedt ondersteuning voor extra docker run-parameters of zelfs andere docker-opdrachten.

De uitvoer lijkt op het volgende:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
Sending context (1.855 KiB) to registry: mycontainerre...
Queued a run with ID: cab
Waiting for an agent...
2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
2019/03/19 19:01:53 Setting up Docker configuration...
2019/03/19 19:01:54 Successfully set up Docker configuration
2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2019/03/19 19:01:55 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

2019/03/19 19:01:56 Successfully executed container: acb_step_0
2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)

Run ID: cab was successful after 6s

Resources opschonen

U kunt de opdracht az group delete gebruiken om de resourcegroep, het containerregister en de daar opgeslagen containerinstallatiekopieën te verwijderen wanneer u ze niet meer nodig hebt.

az group delete --name myResourceGroup

Volgende stappen

In deze snelstart hebt u functies van ACR-taken gebruikt om snel een Docker-containerinstallatie kopie in Azure te bouwen, te pushen en uit te voeren, zonder een lokale Docker-installatie. Ga verder met de zelfstudies over Azure Container Registry-taken voor meer informatie over het gebruik van ACR-taken voor het automatiseren van installatiekopieën en updates.