Implantar uma imagem do Docker em uma Instância de Contêiner do Azure
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ê precisa 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 marca, 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ê terá 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.