Azure Container Registry — Armazenando imagens e artefatos

Renicius Pagotto Fostaini
9 min readOct 6, 2022

E ai pessoal, no post de hoje vamos falar sobre Azure Container Registry, uma excelente alternativa ao Docker Hub para armazenamento de imagens e artefatos públicos e privados.

Aprenderemos também como utilizar o Azure CLI e o Docker CLI para criação e upload de imagens docker.

Quer aprender mais sobre Docker? Acesse aqui o post onde explico conceitos e comandos básicos e o passo a passo da criação de um dockerfile.

O que Azure Container Registry?

É um serviço de armazenamento e gerenciamento de imagens e artefatos onde seu funcionamento é baseado no Docker Registry.

O Azure Container Registry possui suporte a distribuição OCI, que é uma especificação agnóstica de fornecedor/provedor responsável por habilitar o armazenamento, compartilhamento e proteção de artefatos e imagens.

O que são Artefatos?

Artefatos são objetos utilizados por algum processo, por exemplo, dockerfile, appconfig, appsettings, helm chart, entre outros.

Conceitos Básicos do Azure Container Registry

O Azure Container Registry possui alguns conceito básicos como namespace, repositórios e tags que são essenciais para uma correta utilização do recurso.

Repositório

É uma coleção de imagens ou artefatos com o mesmo nome, porém com tags diferentes. O repositório pode conter um namespace que permitem identificar repositórios relacionados. Para utilizar um namespace, utilizamos uma delimitação do nome feita com uma barra.

Exemplo de repositório:

  • productapi:v1
  • productapi:v2
  • productapi:latest

Exemplos de respositórios com namespaces:

  • product/productapi:v1
  • product/catalogapi:v1
  • notification/emailapi:v1
  • notification/pushapi:v1

Tag

A tag é basicamente um meio de versionamento de uma imagem ou artefato. Podemos ter diferentes versões de uma mesma imagem/artefato, porém com tags diferentes.

Exemplo de tags:

  • customerapi:latest
  • customerapi:v1
  • customerapi:v2

Demonstração

Na demonstração de hoje, vamos explicar o passo a passo do provisionamento de uma conta do Azure Container Registry através do Portal do Azure e também via Azure CLI e também demonstraremos a criação e o upload de uma imagem para o mesmo.

Pré-requisitos

Provisionando o Azure Container Registry via Portal do Azure

Abra o Portal do Azure e na barra de pesquisa digite o nome do recurso, no caso Azure Container Registry e em seguida selecione o mesmo.

Na próxima tela de listagem do recurso, clique em + Create.

Nessa tela precisamos fornecer algumas informações que serão utilizadas para a criação do recurso.

Para melhor entendimento, abaixo temos uma explicação detalhada de cada informação:

  • Subscription: Nome da Subscription que será utilizada no provisionamento de um novo serviço.
  • Resource Group: Nome do Resource Group a ser utilizado e que está associado com a Subscription. Caso não possua nenhum, selecione a opção Create new logo abaixo do drop down para criar um novo.
  • Registry name: Nome a ser dado para o serviço.
  • Location: Localização onde o serviço será provisionado.
  • Availabity Zones: Quando selecionado, oferece alta disponibilidade e resiliência para todos os registros.
  • SKU: É o tipo da camada de serviço desejada. Estão disponíveis as camadas Basic, Standard e Premium e cada uma delas tem sua particularidade.

Em seguida clique em Review + Create e após a validação das informações pelo gerenciador de recurso, clique em Create.

Finalizado o provisionamento de uma nova conta do Azure Container Registry, vamos acessá-la e no menu lateral selecione a opção Repositories.

Dentro da opção Repositories é onde os artefatos/imagens ficam armazenados, porém em nosso caso, como acabamos de criar o recurso, o repositório está vazio.

Provisionando o Azure Container Registry via Azure CLI

Outra alternativa de provisionamento do Azure Container Registry é via Azure CLI, a famosa linha de comando. Para isso precisaremos utilizar um sequência de comandos que serão detalhados abaixo.

Com o Azure CLI instalado em nossa máquina, o primeiro passo é realizar a autenticação na conta do Azure utilizando o seguinte comando.

az login

Com a autenticação feita, precisamos definir a Subscription que vamos utilizar para o provisionamento dos recursos, para isso utilize o seguinte comando.

az account set -s nome-da-subscription

No comando az account definimos qual recurso queremos acessar no Azure, nesse caso queremos utilizar a nossa Subscription. O comando set é responsável por informar que queremos definir uma Subscription específica e o argumento -s é onde passamos o nome da Subscription desejada.

Uma vez autenticado e com a Subscription definida, vamos provisionar um novo recurso do Azure Container Registry utilizando o seguinte comando abaixo.

az acr create -g "nome-resource-group" -n "nome-recurso" --sku nome-sku

O comando az acr create é onde informamos o recurso desejado e a ação sobre esse recurso, no caso o acrônimo acr significa Azure Container Registry e a ação desejada é o create que é o comando de criação. Temos também o comando delete, update, list, entre outros.

O argumento -g ou --resource-group é onde definimos o Resource Group a ser utilizado, lembrando que este deve estar vinculado a uma Subscription. O argumento -n ou --name é utilizado para nomear o recurso e por fim, o argumento --sku é o tipo de camada de serviço desejado, caso nenhuma informação seja especificada, o recurso será criado com o tipo Standard por padrão.

Após a execução desse comando um novo recurso do Azure Container Registry será provisionado e você poderá visualiza-lo através do portal do Azure.

Um ponto importante a ser mencionado é que todo recurso do Azure Container Registry possui uma URL de acesso para o gerenciamento dos artefatos/imagens. Essa informação pode ser encontrada na página do recurso e possui o nome de Login server.

Criação do projeto e dockerfile

Para as demonstrações de hoje, precisaremos de um projeto simples do tipo API e que possua um dockerfile para a criação de uma imagem docker.

Para isso, vamos criar um novo projeto no Visual Studio com a opção Docker habilitada.

Com a criação de um novo projeto concluído, note que na Solution possuímos um Dockerfile com todas as configurações necessárias e pronto para uso. Lembrando que esse Dockerfile é fornecido junto ao template do projeto.

Concluímos aqui a criação de um projeto bem simplista, no caso utilizamos o próprio template oferecido pelo .NET, porém o ponto mais importante é o Dockerfile que utilizaremos para a criação da nossa imagem.

Criação e upload da imagem com Docker CLI

Com o Docker CLI devidamento instalado em nossa máquina, o primeiro passo é realizar a criação de uma imagem da nossa aplicação utilizando o dockerfile.

Abra o terminal de linha de comando da sua máquina, acesse a pasta raiz da aplicação que acabamos de criar e execute o seguinte comando para a criação da imagem.

docker build -t nome-da-imagem -f AzureApiContainer/Dockerfile .

O comando docker build é responsável por definir a ação desejada, o argumento -t é onde passamos o nome desejado para a nossa imagem, o argumento -f é a localização do dockerfile da aplicação e por fim o ponto final após o dockerfile representa a intenção de executar o dockerfile daquele contexto.

Com a criação da imagem concluída, execute o comando docker images para verificação da imagem. No meu caso, defini o nome de azureapicontainer para a imagem.

Agora é o momento de definir um novo nome para a imagem que contenha a URL do nosso servidor de registro (Login server), ou seja, o Azure Container Registry.

docker tag azureapicontainer:latest pagottoacr.azurecr.io/azureapicontainer:v1

Uma nova imagem será criada utilizando o nome e a tag que acabamos de informar.

O funcionamento do comando de adicionar uma nova tag junto com a URL do serviço, funciona da seguinte maneira

docker tag nome-da-imagem:tag login-server/nome-imagem-destino:tag

O comando docker tag é onde definimos a ação de criar uma nova versão da mesma imagem com tag e nome diferente. Precisamos também informar a imagem de origem e a imagem de destino, porém no caso da imagem de destino, precisamos adicionar no ínicio e separado por barra, o nome do servidor de registro, ou seja, o Login server da página do Azure Container Registry do Azure no qual falamos acima.

Com a imagem finalizada e pronta para upload, primeiramente precisamos realizar uma autenticação no Azure Container Registry. Para essa autenticação, utilizamos o seguinte comando abaixo.

az acr login -n nome-azure-container-registry

O comando az acr login define a ação que desejamos executar, no caso uma autenticação (login) no Azure Container Registry (acr). No argumento -n devemos passar o nome da conta/serviço do Azure Container Registry que iremos utilizar para armazenar a imagem.

Após a autenticação, finalmente estamos prontos para realizar o upload da imagem utilizando o seguinte comando.

docker push nome-imagem-servidor-tag

O comando docker push define a ação de upload de imagem onde precisamos especificar a imagem a ser utilizada, nesse caso utilizaremos a imagem que possui o nome do servidor de registro. Com isso o docker irá utilizar o nome do servidor especificado para se conectar e realizar o upload.

Em meu caso, eu utilizei o comando abaixo para o upload da imagem.

docker push pagottoacr.azurecr.io/azureapicontainer:v1

Criação e upload da imagem com Azure CLI

Para o criação de uma imagem com o Azure CLI, utilizaremos o Azure Container Registry Tasks (ACR Tasks), que são comandos de criação, envio(upload) e execução de uma imagem de container nativamente no Azure, sem a necessidade de possuir o Docker instalado localmente.

Para a criação de uma imagem via Azure CLI, abra o terminal de linha de comando da sua máquina, acesse novamente a pasta raiz da aplicação e execute o seguinte comando.

az acr build -t "nome-imagem" -r nome-registry -f diretorio-dockerfile .

O comando az acr build define a ação desejada, no nosso caso a criação de uma nova imagem. O argumento -t é onde definimos o nome da nossa imagem. O argumento -r é o onde especificamos o nome do Azure Container Registry que vamos utilizar. O argumento -f é a localização do dockerfile da nossa aplicação e por fim o ponto final após o dockerfile representa a intenção de executar o dockerfile daquele contexto.

Ao executar o comando, a criação e o upload da imagem serão feitos automaicamente para o Azure Container Registry.

Visualização da imagem no Azure Container Registry

Realizado a criação e o upload de uma imagem via Docker CLI ou Azure CLI, abra o Portal do Azure novamente e selecione o recurso Azure Container Registry que provisionamos.

No menu lateral, selecione a opção Repositories

Com isso, finalmente conseguimos ver a nossa imagem armazenada no serviço.

Acessando a imagem/repositório, conseguimos visualizar as diferentes versões disponíveis.

Com isso temos a nossa imagem armazenada no Azure Container Registry e disponível para uso em qualquer processo.

E ai, gostou desse post? Quer conversar um pouco mais sobre Azure Container Registry? Deixe um comentário com suas dúvidas e idéias ou entre em contato através do LinkedIn.

Referências

Managed container registries — Azure Container Registry | Microsoft Learn

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Renicius Pagotto Fostaini
Renicius Pagotto Fostaini

Written by Renicius Pagotto Fostaini

Solutions Architect | Speaker | Community Manager

No responses yet

Write a response