Snabbstart: Skapa och köra en containeravbildning med hjälp av Azure Container Registry Tasks
I den här snabbstarten använder du Azure Container Registry Tasks-kommandon för att snabbt skapa, push-överföra och köra en Docker-containeravbildning internt i Azure, utan en lokal Docker-installation. ACR Tasks är en uppsättning funktioner i Azure Container Registry som hjälper dig att hantera och ändra containeravbildningar under hela containerns livscykel. Det här exemplet visar hur du avlastar utvecklingscykeln för "inre loop" containeravbildning till molnet med byggen på begäran med hjälp av en lokal Dockerfile.
Efter den här snabbstarten kan du utforska mer avancerade funktioner i ACR Tasks med hjälp av självstudierna. ACR Tasks kan automatisera avbildningsversioner baserat på kodincheckningar eller basavbildningsuppdateringar, eller testa flera containrar parallellt, bland andra scenarier.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här snabbstarten kräver version 2.0.58 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Skapa en resursgrupp
Om du inte redan har ett containerregister skapar du först en resursgrupp med kommandot az group create . En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.
I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.
az group create --name myResourceGroup --location eastus
Skapa ett containerregister
Skapa ett containerregister med kommandot az acr create . Registernamnet måste vara unikt i Azure och innehålla 5–50 alfanumeriska tecken. I följande exempel används mycontainerregistry008 . Uppdatera det här till ett unikt värde.
az acr create --resource-group myResourceGroup \
--name mycontainerregistry008 --sku Basic
Det här exemplet skapar ett Basic-register , ett kostnadsoptimerad alternativ för utvecklare som lär sig mer om Azure Container Registry. Mer information om tillgängliga tjänstnivåer finns i Tjänstnivåer för containerregister.
Skapa och push-överföra avbildning från en Dockerfile
Använd nu Azure Container Registry för att skapa och push-överföra en avbildning. Skapa först en lokal arbetskatalog och skapa sedan en Dockerfile med namnet Dockerfile med den enda raden: FROM mcr.microsoft.com/hello-world
. Det här är ett enkelt exempel för att skapa en Linux-containeravbildning från avbildningen hello-world
som finns i Microsoft Container Registry. Du kan skapa din egen Standard Dockerfile och skapa avbildningar för andra plattformar. Om du arbetar i ett bash-gränssnitt skapar du Dockerfile med följande kommando:
echo "FROM mcr.microsoft.com/hello-world" > Dockerfile
Kör kommandot az acr build, som skapar avbildningen och push-överför den till registret när avbildningen har skapats. I följande exempel skapas och push-överföras avbildningen sample/hello-world:v1
. I .
slutet av kommandot anges platsen för Dockerfile, i det här fallet den aktuella katalogen.
az acr build --image sample/hello-world:v1 \
--registry mycontainerregistry008 \
--file Dockerfile .
Utdata från en lyckad version och push-överföring liknar följande:
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
Kör avbildningen
Kör nu snabbt avbildningen som du skapade och push-överförde till registret. Här använder du az acr run för att köra containerkommandot. I arbetsflödet för containerutveckling kan det här vara ett verifieringssteg innan du distribuerar avbildningen, eller så kan du inkludera kommandot i en YAML-fil i flera steg.
I följande exempel används $Registry för att ange slutpunkten för registret där du kör kommandot:
az acr run --registry mycontainerregistry008 \
--cmd '$Registry/sample/hello-world:v1' /dev/null
Parametern cmd
i det här exemplet kör containern i sin standardkonfiguration, men cmd
stöder ytterligare docker run
parametrar eller till och med andra docker
kommandon.
De utdata som genereras liknar följande:
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
Rensa resurser
När resursgruppen inte längre behövs kan du använda kommandot az group delete till att ta bort resursgruppen, containerregistret och containeravbildningarna som är lagrade där.
az group delete --name myResourceGroup
Nästa steg
I den här snabbstarten använde du funktioner i ACR Tasks för att snabbt skapa, push-överföra och köra en Docker-containeravbildning internt i Azure, utan en lokal Docker-installation. Fortsätt till självstudierna för Azure Container Registry Tasks om du vill lära dig mer om hur du använder ACR-uppgifter för att automatisera avbildningsversioner och uppdateringar.