Implantar uma imagem do Docker em uma Instância de Contêiner do Azure

Concluído

A Instância de Contêiner do Azure é um serviço que carrega e executa imagens do Docker sob demanda. O serviço da Instância de Contêiner do Azure pode recuperar a imagem de um registro como o Docker Hub ou o Registro de Contêiner do Azure.

Sua organização deseja usar o Azure para executar aplicativos Web. Por esse motivo, faz sentido armazenar as imagens no Registro de Contêiner do Azure e executá-las usando o serviço de Instância de Contêiner do Azure.

Nesta unidade, você aprenderá como carregar uma imagem do Docker para o Registro de Contêiner do Azure. Então, você executará a imagem usando o serviço de Instância de Contêiner do Azure.

Usar o Registro de Contêiner do Azure para armazenar um contêiner

O Registro de Contêiner do Azure é um serviço de hospedagem de registros oferecido pelo Azure. Cada recurso do Registro de Contêiner do Azure que você cria é um registro separado com uma URL exclusiva. Esses registros são privados: eles exigem autenticação para efetuar push ou pull das imagens. O Registro de Contêiner do Azure é executado na nuvem e oferece níveis de escalabilidade e disponibilidade semelhantes a outros serviços do Azure.

Você pode criar um registro usando o portal do Azure ou a CLI (interface de linha de comando) do Azure. Você pode usar o Cloud Shell no portal do Azure ou uma instalação local da CLI do Azure. Tenha em mente que você precisará criar um grupo de recursos para criar o registro. Ao criar um grupo de recursos, recomendamos escolher a região mais próxima. Neste exemplo, o nome do grupo de recursos é mygroup e o local é Oeste dos EUA.

Você não precisa executar nenhum dos comandos a seguir. Faremos isso no próximo exercício.

Observação

Você precisa de um nome exclusivo para o contêiner. É possível verificar se um nome já está em uso aqui.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

SKUs diferentes oferecem vários níveis de escalabilidade e armazenamento.

Os repositórios do Registro de Contêiner do Azure são privados, ou seja, eles não dão suporte a acesso não autenticado. Para efetuar pull de imagens de um repositório do Registro de Contêiner do Azure, use o comando docker login e especifique a URL do servidor de logon do registro. A URL do servidor de logon de um registro no Registro de Contêiner do Azure tem o formato <nome_do_registro>.azurecr.io.

docker login myregistry.azurecr.io

O logon do Docker solicitará um nome de usuário e uma senha. Para localizar essas informações, acesse o portal do Azure e procure as chaves de acesso do registro ou execute o comando a seguir.

az acr credential show --name myregistry --resource-group mygroup

Efetue push de uma imagem do computador local para um registro do Docker com o comando docker push. Para enviar uma imagem por push, é necessário criar um alias para a imagem, que especifique o repositório e a marca criados pelo registro do Docker. O nome do repositório precisa estar no formato *<login_server>/<image_name>:<tag/>. Use o comando docker tag para realizar essa operação. O exemplo a seguir cria um alias para a imagem reservationsystem.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

Se executar docker image ls, você verá duas entradas para a imagem: uma com o nome original e a outra com o novo alias.

Depois de executar o comando de tag, você pode carregar a imagem no registro do Registro de Contêiner do Azure com o comando a seguir.

docker push myregistry.azurecr.io/reservationsystem:v2

Verifique se o upload da imagem foi feito corretamente listando os repositórios no registro com o comando a seguir.

az acr repository list --name myregistry --resource-group mygroup

É possível listar as imagens do registro com o comando acr repository show.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

Observação

Você verá pelo menos duas marcas para cada imagem em um repositório. Uma marca será o valor especificado no comando acr build (v1 no exemplo anterior). O outro será o mais recente. Sempre que você recompila uma imagem, o Registro de Contêiner do Azure cria automaticamente a tag mais recente como um alias para a versão mais recente da imagem.

Usar a Instância de Contêiner do Azure para executar uma imagem

O serviço da Instância de Contêiner do Azure pode carregar uma imagem do Registro de Contêiner do Azure e executá-la no Azure.

Crie uma instância de contêiner e inicie a imagem executando o comando az container create. Forneça o nome de usuário e a senha do registro nos parâmetros registry-username e registry-password. Um endereço IP será alocado à instância. Acesse a instância com o endereço IP. Como opção, você poderá especificar um nome DNS se preferir fazer referência à instância por meio de um rótulo mais amigável. Observe que você especifica a imagem como uma URL que faz referência ao registro (myregistry) no serviço do Registro de Contêiner do Azure (azurecr.io). Se você estiver usando o Docker Hub ou outro registro, substitua essa URL pela URL da sua imagem nesse registro.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

O Azure hospeda a instância com um nome de domínio baseado no rótulo DNS que você especificou. Para encontrar o nome de domínio totalmente qualificado da instância, consulte o endereço IP da instância.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

É possível acessar o aplicativo por meio de um navegador da Web. Você pode navegar até a URL retornada por este comando. Veremos como fazer isso na próxima unidade.