O Azure Container Registry permite que você crie, armazene e gerencie imagens e artefatos de contêiner em um registro privado para todos os tipos de implantações de contêiner. Use os registros de contêiner do Azure com seus pipelines de desenvolvimento e implantação de contêiner existentes. Use o Azure Container Registry Tasks para criar imagens de contêiner no Azure sob demanda ou automatizar compilações acionadas por atualizações de código fonte, atualizações na imagem de base de um contêiner ou timers.
01 – Faça login no portal do Azure.
02 – No portal do Azure pesquise por Container registries.
03 – Na tela Container registries clique em Create container registry.
04 – Na tela Create container registry, em Project details selecione a assinatura e o grupo de recursos, em Instance details selecione um nome para o recurso e localização, para fins de laboratório vamos utilizar o SKU basic, em seguida clique em Next: Networking.
05 – Para a opção Networking podemos selecionar Public endpoint (all networks) e Private endpoint, como estamos utilizando o SKU basic não podemos selecionar a opção Private endpoint, em nosso exemplo vamos utilizar a opção Public endpoint, clique em Next: Encryption.
06 – Para a opção Encryption como não estamos utilizando o SKU Premium não podemos fazer nenhuma alteração, clique em Review + create.
07 – Na tela Review + create clique em Create.
08 – Assim que o deployment finalizar clique em Go to resource.
09 – Vamos habilitar o Admin user com essa opção ativada podemos logar no ACR utilizando o Login server e access key, em Settings clique em Access keys.
10 – Na tela Access keys, em Admin user clique em Enabled.
OBSERVAÇÃO: Anote o Userame e password, vamos precisar dessas informações para logar no ACR e enviar a imagem docker.
Download e instalação Docker Desktop
O Docker Desktop é um aplicativo fácil de instalar para o ambiente Mac ou Windows que permite construir e compartilhar aplicativos e microsserviços contêineres. O Docker Desktop inclui Docker Engine,Docker CLI client, Docker Compose, Docker Content Trust, Kubernetese Helper Credencial.
O Docker Desktop trabalha com sua escolha de ferramentas de desenvolvimento e idiomas e lhe dá acesso a uma vasta biblioteca de imagens e modelos certificados no Docker Hub. Isso permite que as equipes de desenvolvimento ampliem seu ambiente para construir rapidamente, integrar continuamente e colaborar usando um repositório seguro.
Algumas das principais características do Docker Desktop incluem:
- Capacidade de containerizar e compartilhar qualquer aplicativo em qualquer plataforma de nuvem, em vários idiomas e frameworks
- Fácil instalação e configuração de um ambiente completo de desenvolvimento do Docker
- Inclui a versão mais recente de Kubernetes
- Atualizações automáticas para mantê-lo atualizado e seguro
- No Windows, a capacidade de alternar entre ambientes Linux e Windows Server para criar aplicativos
- Desempenho rápido e confiável com virtualização nativa do Windows Hyper-V
- Capacidade de trabalhar nativamente no Linux através do WSL 2 em máquinas Windows
- Montagem de volume para código e dados, incluindo notificações de alteração de arquivo e fácil acesso à execução de contêineres na rede localhost
- Desenvolvimento e depuração de contêineres com IDEs suportados
11 – Para baixar o Docker Desktop, clique no link abaixo, em seguida selecione a versão do seus sistema operacional e clique em Download.
https://www.docker.com/products/docker-desktop
12 – Execute o arquivo Docker Desktop Installer.
13 – Na tela Configuration deixas as opções padrão selecionada e clique em OK.
14 – Aguarde a descompactação dos arquivos.
15 – Após a instalação ser finalizada, clique em Close and restart.
16 – Abra o prompt de comando do Windows e execute o comando docker –version para verificar se o docker está instalado.
Instalar o Visual Studio Code
17 – O Visual Studio pode ser baixado no link abaixo.
https://code.visualstudio.com/
18 – Na tela do Visual Studio clique em Download for Windows.
19 – Após o Visual Studio ser baixado execute o arquivo de instalação,
20 – Na tela Setup selecione I accept agreement e clique em Next.
21 – Na tela Select Destiation Location clique em Next.
22 – Na tela Select Start Menu Folder clique em Next.
23 – Na tela Select Additiomal Tasks marque Crate a desktop icon e clique em Next.
24 – Na tela Ready to Install clique em Install.
25 – Na tela Completing clique em Finish.
26 – Após o Visual Studio Code ser aberto vamos instalar a extensão do Docker, clique em Extensions pesquise por Docker, selecione a extensão Docker e clique em Install.
27 – O Docker foi instado no Visual Studio Code.
Aplicação Node.js
Uma imagem de contêiner do Docker é um pacote independente e leve que pode ser executado e contém todos os requisitos de que você precisa para executar um aplicativo, como: código, tempo de execução, bibliotecas e configurações. A imagem pode então ser enviada para um registro de contêiner e puxada para seu servidor para ser executada como um contêiner.
Tenho uma aplicação conteinerizada simples em Node.js em meu GitHub. Clique na imagem abaixo para baixar a aplicação.
28 – No Visual Studio Code clique em File e Open Folder.
Selecione a pasta onde a aplicação foi baixada e clique em Select Folder.
29 – Como podemos observar a aplicação foi aberta no Visual Studio Code.
30 – O app.js é a página da nossa aplicação.
Criar imagem docker da aplicação
31 – No Visual Studio Code clique em Terminal e New Terminal.
32 – O comando abaixo cria a imagem docker da aplicação APP-DOCKER com o nome de app-jadsonalves
No terminal no Visual Studio Code execute o comando abaixo.
docker build -t app-jadsonalves .
OBSERVAÇÃO: O comando deve ser executado na pasta onde a aplicação está.
33 – Como podemos observar a imagem docker da aplicação está sendo criada.
34 – Como podemos observar o processo de criação da imagem docker foi finalizado.
35 – O comando docker image ls verifica as imagens docker criadas.
Como podemos observar a imagem app-jadsonalves foi criada.
36 – Também podemos observar as imagens criadas no Docker Desktop em Images.
37 – Vamos executar a aplicação app-jadsonalves localmente, execute o seguinte comando docker run -dp 80:80 app-jadsonalves
38 – Para verificar se aplicação está em execução abra seu navegador e digite localhost.
Como podemos observar nossa aplicação está em execução.
39 – Também podemos verificar nossa aplicação no Docker Desktop em Containers / Apps.
40 – Podemos verificar os containers criados com comando docker ps
41 – Podemos parar o container com o seguinte comando, passando o Container ID.
docker stop 251435f026ae
42 – No Docker Desktop em Containers / Apps podemos observar que o container foi parado.
43 – Podemos remove um container com o seguinte comando, passando o Container ID.
docker rm -f 251435f026ae
44 – Como podemos observar não temos containers criados.
45 – Também podemos verificar que não temos containers criado no Docker Desktop em Containers / Apps.
Enviar imagem Docker para o Azure Container Registry
46 – Vamos logar no portal do Azure para enviar a imagem docker para o container registry, para logar no azure digite o comando az login em seguida insira seu usuário e senha do Azure.
É necessário que o Azure CLI esteja instalado em seu computador, para baixar o módulo acesse o link abaixo.
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli
Também é necessário que a extensão Azure Tools tenha sido instalada no Visual Studio Code.
47 – O próxima passo é logar no Azure containe registry pelo docker.
Podemos encontrar o login server na tela de Overview do Azure Container registry.
Execute o comando abaixo para logar no Azure Container Registry, será solicitado o usuário e senha, podemos encontrar essas informações no Azure Container Registry em Access Keys.
docker login jadsonalves.azurecr.io
48 – Associe um alias a uma imagem docker existente
docker tag app-jadsonalves jadsonalves.azurecr.io/app-jadsonalves:v1
49 – Podemos verificar as imagens docker criadas com o seguinte comando docker image ls
Como podemos observar temos duas imagens docker criadas.
50 – Também podemos verificar as imagens docker criada utilizando o Docker Desktop em Images.
51 – Para enviar a imagem docker jadsonalves.azurecr.io/app-jadsonalves:v1 para o Azure Container Registry execute o seguinte comando docker push jadsonalves.azurecr.io/app-jadsonalves:v1
52 – Podemos verificar se imagem foi enviada para o Azure container Registry com o seguinte comando az acr repository list –name jadsonalves
53 – Também podemos verificar a imagem no Azure Container Registry, no portal pesquise por Container registries.
54 – Selecione o Container registries jadsonalves.
55 – Após selecionar o container jadsonalves em Services clique em Repositories.
56 – Em Repositories observe que temos nossa imagem docker app-jadsonalves.
57 – Selecione a imagem docker app-jadsonalves em Tags observe que temos a tag v1.
Criar Container instances
As Instâncias de Contêiner do Azure oferecem a maneira mais rápida e simples para executar um contêiner no Azure, sem a necessidade de gerenciar máquinas virtuais nem adotar um serviço de nível superior.
As Instâncias de Contêiner do Azure são uma ótima solução para qualquer cenário que possa ser usado em contêineres isolados, incluindo aplicativos simples, automação de tarefas e criação de trabalhos.
As Instâncias de Contêiner do Azure permitem expor seus grupos de contêineres diretamente à Internet com um endereço IP e um FQDN (nome de domínio totalmente qualificado). Quando você cria uma instância de contêiner, pode especificar uma etiqueta de nome de DNS personalizado para que o seu aplicativo seja acessível em customlabel.azureregion.azurecontainer.io.
As Instâncias de Contêiner do Azure também são compatíveis com a execução de um comando em um contêiner em execução, fornecendo um shell interativo para ajudar no desenvolvimento e na solução de problemas de aplicativos. O acesso ocorre por HTTPS, usando TLS para proteger conexões de cliente.
58 – No portal do Azure pesquise por Container instances.
59 – Na tela Container instances clique em + Create.
60 – Na tela Create container instance selecione a subscription e resource group.
Em Container details, para a opção Container name digite o nome para o container, em Region selecione a localização que o recurso será criado, para a opção Image source selecione Azure Container Registry, automaticamente os valores Registry, Imagem e Image tag serão preenchido com o valor da imagem que enviamos para o container registry, caso tenha outras imagem podemos selecionar, a opção OS type foi definido como Linux e não podemos alterar, em Size podemos selecionar o tamanho do container, em seguida clique em Next: Networking.
61 – Na tela Networking para a opção Network type vamos selecionar Public, em DNS name label digite um nome isso fará parte de um FQDN que você pode usar para acessar o contêiner, em Ports como nossa aplicação foi configurada para utilizar a porta 80 digite 80 na opção Ports e para Ports protocol selecione TCP, em seguida clique em Next: Advanced.
Público – criará um endereço IP público para sua instância de contêiner.
Privado – permitirá que você escolha uma rede virtual nova ou existente para sua instância de contêiner. Isso ainda não está disponível para contêineres do Windows.
Nenhum – não criará um IP público ou rede virtual. Você ainda poderá acessar seus registros de contêiner usando a linha de comando.
62 – Na tela Advanced não vamos realizar nenhuma alteração, clique em Next: Tags.
63 – Na tela Tags não vamos realizar nenhum alteração, clique em Next: Review + create.
64 – Na tela Review + create clique em Create.
65 – Aguarde o Deployment finalizar.
66 – Quando o deployment finalizar clique em Go to resource.
67 – Em Overview podemos acessar nossa aplicação utilizando o FQDN ou o IP address, no navegador digite o FQDN do container.
68 – Como podemos observar temos nossa aplicação rodando no container.
69 – Em Settings clique em Containers, em Containers podemos verificar os eventos relacionados ao container, em Connect podemos conectar no container e executar comandos, clique em Connect, em Choose Start UP Command selecione /bin/bash e clique em Connect.
70 – Como podemos observar conectamos no container, não é a opção recomendada mais podemos alterar nossa aplicação por aqui, vamos digitar o comando ls para listar o conteúdo do diretório, em seguida vamos utilizar o cat para exibir o conteúdo do arquivo app.js.
Comente suas sugestões e observações!
Forte abraço, obrigado e até o próximo post.
Carreira desenvolvida na área de tecnologia da informação, com ampla experiência em Cloud
Computing e Cloud Security.
Forte atuação em projetos de Cloud Security no Microsoft Azure e com tecnologias de
segurança do Microsoft 365.
Tenho Experiência em Microsoft Azure, Microsoft 365, AWS e Windows Server.
Sou Microsoft MVP na categoria Microsoft Azure, AWS Communit Builder Security & Identity e
MCT.