Exercício: criar e executar uma imagem de contêiner usando as Tarefas do Registro de Contêiner do Azure

Concluído

Nesse exercício, você usa tarefas do ACR para executar as seguintes ações:

  • Criar um Registro de Contêiner do Azure (ACR)
  • Criar uma imagem e efetuar push dela de um Dockerfile
  • Verifique os resultados
  • Executar a imagem no ACR

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa. Caso ainda não tenha uma assinatura, você pode se inscrever para obter uma avaliação gratuita em https://azure.com/free

Faça logon no Azure e inicie o Cloud Shell

  1. Entre no portal do Azure e abra o Cloud Shell.

    O local do botão iniciar do Cloud Shell.

  2. Depois que o shell abrir, selecione o ambiente Bash.

    Selecionar o ambiente Bash.

Criar um Registro de Contêiner do Azure

  1. Crie um grupo de recursos para o registro. Substitua <myLocation> no comando a seguir por um local próximo a você.

    az group create --name az204-acr-rg --location <myLocation>
    
  2. Crie um registro de contêiner básico. O nome do registro deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos. Substitua <myContainerRegistry> no comando a seguir por um valor exclusivo.

    az acr create --resource-group az204-acr-rg \
        --name <myContainerRegistry> --sku Basic
    

    Observação

    O comando cria um registro Básico, uma opção com otimização de custo para os desenvolvedores que estão aprendendo a usar o Registro de Contêiner do Azure.

Criar uma imagem e efetuar push dela de um Dockerfile

Agora, use o Registro de Contêiner do Azure para criar uma imagem com base em um Dockerfile local e enviá-la por push.

  1. Crie ou navegue até um diretório local e use o comando a seguir para criar o Dockerfile. O Dockerfile conterá uma só linha que faz referência à imagem hello-world hospedada no Registro de Contêiner da Microsoft.

    echo FROM mcr.microsoft.com/hello-world > Dockerfile
    
  2. Execute o comando az acr build, que cria a imagem e, depois que ela é criada com êxito, faz o envio dela por push ao registro. Substitua <myContainerRegistry> pelo nome que foi usado anteriormente.

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

    A seguir está um exemplo abreviado da saída do comando anterior mostrando as últimas linhas com os resultados finais. Você pode ver no campo repository que a imagem sample/hello-word está listada.

    - image:
        registry: <myContainerRegistry>.azurecr.io
        repository: sample/hello-world
        tag: v1
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      runtime-dependency:
        registry: mcr.microsoft.com
        repository: hello-world
        tag: latest
        digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
      git: {}
    
    
    Run ID: cf1 was successful after 11s
    

Verifique os resultados

  1. Use o comando az acr repository list para listar os repositórios no registro. Substitua <myContainerRegistry> pelo nome que foi usado anteriormente.

    az acr repository list --name <myContainerRegistry> --output table
    

    Saída:

    Result
    ----------------
    sample/hello-world
    
  2. Use o comando az acr repository show-tags para listar as marcas no repositório de sample/hello-world. Substitua <myContainerRegistry> pelo nome que foi usado anteriormente.

    az acr repository show-tags --name <myContainerRegistry> \
        --repository sample/hello-world --output table
    

    Saída:

    Result
    --------
    v1
    

Executar a imagem no ACR

  1. Execute a imagem de contêiner sample/hello-world:v1 do registro de contêiner usando o comando az acr run. O exemplo a seguir usa $Registry para especificar o registro em que você executa o comando. Substitua <myContainerRegistry> pelo nome que foi usado anteriormente.

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

    O parâmetro cmd deste exemplo executa o contêiner na configuração padrão, mas o cmd dá suporte a outros parâmetros docker run ou, até mesmo, a outros comandos docker.

    O seguinte exemplo de saída é abreviado:

    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.
    
    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
    

Limpar os recursos

Quando os recursos não forem mais necessários, 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 nele.

az group delete --name az204-acr-rg --no-wait