Rychlý start: Sestavení a spuštění image kontejneru pomocí Azure Container Registry Tasks

V tomto rychlém startu použijete příkazy Azure Container Registry Tasks k rychlému sestavení, vložení a spuštění image kontejneru Dockeru nativně v Azure bez místní instalace Dockeru. ACR Tasks je sada funkcí v rámci Azure Container Registry, které vám pomůžou spravovat a upravovat image kontejnerů v rámci celého životního cyklu kontejneru. Tento příklad ukazuje, jak přesměrovat cyklus vývoje imagí kontejneru "vnitřní smyčky" do cloudu pomocí sestavení na vyžádání pomocí místního souboru Dockerfile.

Po dokončení tohoto rychlého startu prozkoumáte pokročilejší funkce služby ACR Tasks pomocí kurzů. ACR Tasks může automatizovat sestavení imagí na základě potvrzení kódu, aktualizací základní image nebo testovat více kontejnerů paralelně a kromě jiných scénářů.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure , než začnete.

Požadavky

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.

  • Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Spuštění Azure CLI v kontejneru Dockeru.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

  • Tento rychlý start vyžaduje Azure CLI verze 2.0.58 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření skupiny prostředků

Pokud ještě nemáte registr kontejneru, nejprve vytvořte skupinu prostředků pomocí příkazu az group create . Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.

Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.

az group create --name myResourceGroup --location eastus

Vytvoření registru kontejneru

Vytvořte registr kontejneru pomocí příkazu az acr create . Název registru musí být jedinečný v rámci Azure a musí obsahovat 5 až 50 alfanumerických znaků. V následujícím příkladu se používá myContainerRegistry008 . Aktualizujte název na jedinečnou hodnotu.

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

Tento příklad vytvoří registr Úrovně Basic, což je možnost optimalizovaná z hlediska nákladů, aby se vývojáři dozvěděli o Azure Container Registry. Podrobnosti o dostupných úrovních služby najdete v tématu Úrovně služby Container Registry.

Sestavení a nasdílení image ze souboru Dockerfile

Teď použijte Azure Container Registry k sestavení a nasdílení image. Nejprve vytvořte místní pracovní adresář a pak vytvořte soubor Dockerfile s názvem Dockerfile s jedním řádkem: FROM mcr.microsoft.com/hello-world. Toto je jednoduchý příklad sestavení image kontejneru Linuxu hello-world z image hostované ve službě Microsoft Container Registry. Můžete vytvořit vlastní standardní soubor Dockerfile a vytvářet image pro jiné platformy. Pokud pracujete v prostředí Bash, vytvořte soubor Dockerfile pomocí následujícího příkazu:

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

Spusťte příkaz az acr build , který image sestaví a po úspěšném sestavení image nasdílí do registru. Následující příklad sestaví a nasdílí sample/hello-world:v1 image. Na . konci příkazu nastaví umístění souboru Dockerfile, v tomto případě aktuálního adresáře.

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

Výstup úspěšného sestavení a nasdílení změn je podobný následujícímu:

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

Spuštění image

Teď rychle spusťte image, kterou jste vytvořili a odeslali do registru. Tady pomocí příkazu az acr run spustíte příkaz kontejneru. V pracovním postupu vývoje kontejnerů to může být ověřovací krok před nasazením image nebo můžete příkaz zahrnout do souboru YAML s více kroky.

Následující příklad používá $Registry k určení koncového bodu registru, ve kterém spouštíte příkaz:

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

Parametr cmd v tomto příkladu spustí kontejner ve výchozí konfiguraci, ale cmd podporuje další docker run parametry nebo dokonce jiné docker příkazy.

Výstup je podobný tomuto:

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

Vyčištění prostředků

Pokud už je nepotřebujete, můžete pomocí příkazu az group delete odebrat skupinu prostředků, registr kontejneru a tam uložené image kontejneru.

az group delete --name myResourceGroup

Další kroky

V tomto rychlém startu jste použili funkce ACR Tasks k rychlému sestavení, vložení a spuštění image kontejneru Dockeru nativně v Azure bez místní instalace Dockeru. Pokračujte ke kurzům Azure Container Registry Tasks, kde se dozvíte, jak pomocí služby ACR Tasks automatizovat sestavování a aktualizace imagí.