Guia de início rápido: criar e executar uma imagem de contêiner usando as Tarefas do Registro de Contêiner do Azure

Neste início rápido, você usa os comandos Tarefas do Registro de Contêiner do Azure para criar, enviar por push e executar rapidamente uma imagem de contêiner do Docker nativamente no Azure, sem uma instalação local do Docker. As Tarefas ACR são um conjunto de recursos no Registro de Contêiner do Azure para ajudá-lo a gerenciar e modificar imagens de contêiner em todo o ciclo de vida do contêiner. Este exemplo mostra como descarregar seu ciclo de desenvolvimento de imagem de contêiner de "loop interno" para a nuvem com compilações sob demanda usando um Dockerfile local.

Após este início rápido, explore os recursos mais avançados das Tarefas ACR usando os tutoriais. As tarefas ACR podem automatizar compilações de imagem com base em confirmações de código ou atualizações de imagem base, ou testar vários contêineres, em paralelo, entre outros cenários.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este início rápido requer a versão 2.0.58 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um grupo de recursos

Se você ainda não tiver um registro de contêiner, primeiro crie um grupo de recursos com o comando az group create . Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

az group create --name myResourceGroup --location eastus

Criar um registo de contentores

Crie um registro de contêiner usando o comando az acr create . O nome do registo tem de ser exclusivo no Azure e pode incluir entre 5 a 50 carateres alfanuméricos. No exemplo a seguir, mycontainerregistry008 é usado. Atualize para um valor exclusivo.

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

Este exemplo cria um Registro Básico , uma opção de custo otimizado para desenvolvedores que aprendem sobre o Registro de Contêiner do Azure. Para obter detalhes sobre as camadas de serviço disponíveis, consulte Camadas de serviço do Registro de contêiner.

Criar e enviar imagem por push a partir de um Dockerfile

Agora use o Registro de Contêiner do Azure para criar e enviar por push uma imagem. Primeiro, crie um diretório de trabalho local e, em seguida, crie um Dockerfile chamado Dockerfile com a única linha: FROM mcr.microsoft.com/hello-world. Este é um exemplo simples para criar uma imagem de contêiner Linux a partir da imagem hospedada hello-world no Microsoft Container Registry. Você pode criar seu próprio Dockerfile padrão e criar imagens para outras plataformas. Se você estiver trabalhando em um shell bash, crie o Dockerfile com o seguinte comando:

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

Execute o comando az acr build, que constrói a imagem e, depois que a imagem é criada com êxito, envia-a para o seu registro. O exemplo a seguir cria e envia por push a sample/hello-world:v1 imagem. O . no final do comando define o local do Dockerfile, neste caso o diretório atual.

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

A saída de uma compilação e push bem-sucedidos é semelhante à seguinte:

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

Executar a imagem

Agora execute rapidamente a imagem que você construiu e enviou para o seu registro. Aqui você usa az acr run para executar o comando container. Em seu fluxo de trabalho de desenvolvimento de contêiner, essa pode ser uma etapa de validação antes de implantar a imagem ou você pode incluir o comando em um arquivo YAML de várias etapas.

O exemplo a seguir usa $Registry para especificar o ponto de extremidade do Registro onde você executa o comando:

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

O cmd parâmetro neste exemplo executa o contêiner em sua configuração padrão, mas cmd suporta parâmetros adicionais docker run ou até mesmo outros docker comandos.

O resultado é semelhante ao seguinte:

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

Clean up resources (Limpar recursos)

Quando não for mais necessário, você poderá usar o comando az group delete para remover o grupo de recursos, o registro de contêiner e as imagens de contêiner armazenadas lá.

az group delete --name myResourceGroup

Próximos passos

Neste início rápido, você usou recursos do ACR Tasks para criar, enviar por push e executar rapidamente uma imagem de contêiner do Docker nativamente no Azure, sem uma instalação local do Docker. Continue para os tutoriais de Tarefas do Registro de Contêiner do Azure para saber como usar as Tarefas ACR para automatizar compilações e atualizações de imagens.