Notice: Undefined index: options in /storage/web/wp-content/plugins/elementor-pro/modules/theme-builder/widgets/site-logo.php on line 123
Container Registry - Darede
Seguindo a série de artigos sobre container, dessa vez nosso #cloudspecialist Thiago Nunes fala sobre as principais ferramentas de container.

Por Thiago Marques
O pai ta on!!

Chegamos a falar um pouco sobre os repositórios de imagens no post sobre arquitetura, que é basicamente um registro central de containers. E como já abordamos anteriormente, a utilização de containers proporciona diversas vantagens, sobretudo em uma cultura DevOps, e um container registry, possui um papel interessante nesse processo: distribuir a imagem mais atualizada, seja de forma publica (para usuários em geral), seja de forma privada (para times de teste, homologação e produção).

Tipos de repositórios

Existem dois tipos de repositórios: os públicos e os privados.

Os repositórios públicos são ótimos para projetos abertos de sistema operacionais, como ubuntu, alpine, para programas como node, redis, nginx, e até para aplicações como grafana, zabbix e elasticsearch.

Note que em um repositório público qualquer pessoa nessa tal de internet pode fazer o pull da imagem, e utilizá-la da forma como lhe for útil.

Já os repositórios privados são exclusivos, e assim mais indicados para aplicações internas, como o desenvolvimento interno com informações sensíveis. Além disso, esse tipo de repositório oferece mais vantagens, como suporte a autenticação, controle de autorizações e acesso, rastreamento de registros por usuários etc.

Docker Hub

Talvez o Docker Hub seja o repositório mais utilizado. Além de ser o repositório padrão do Docker (isso quer dizer que quando executa o docker run, é nesse repositório que o pull ocorre (caso ele não exista localmente)).

O Docker Hub possui uma versão gratuita, e algumas pagas, onde basicamente a diferença é na utilização de repositórios privados e scan de vulnerabilidades (apenas nas versões pagas), e limites de pulls para versão gratuita (200 pulls a cada 6horas).

Elastic Container Registry

O ECR é o repositório da AWS, e tem características similares ao Docker Hub, contudo oferece algumas vantagens, disponibilidade de 99,9%, imagens imutáveis (garantia que não se pode sobrescrever uma imagem depois que ela está publicada), scan de vulnerabilidades, repositórios públicos e privados, limite de 1000 pulls por segundo e 10 push por segundo.

Harbor

Caso você queria um repositório privado e interno, você pode utilizar o Harbor, que também serve como repositório cloud native, Charts Helm, integração de segurança com outras ferramentas como a HashiCorp Vault, e até criar réplicas em provedores de cloud públicas.

Registrando uma imagem no Docker Hub

Para registrar uma imagem no Docker Hub é necessário ter uma conta na plataforma e criar um repositório:

Após a criação do container na plataforma, agora efetuaremos o login na CLI, e fazer o push para o repositório:

docker login

Note que para realizar o push, o nome do repositório tem que ser o mesmo da sua imagem. Em nosso exemplo thiagosagara/darede. Caso o nome fosse diferente um erro similar a esse aqui de baixo seria apresentado:

[root@ip-172-31-0-221 docker]# docker push thiagosagara/myapp
Using default tag: latest
The push refers to repository [docker.io/thiagosagara/myapp]
tag does not exist: thiagosagara/myapp:latest

Com o nome correto basta executar o docker push <[imagem]>. Por padrão ela vai subir com a tag latest.

docker push thiagosagara/darede

Por fim podemos validar a imagem no repositório, assim como comparar o digest e garantir que é a mesma imagem que realizamos o upload.

Registrando uma imagem no ECR

Agora pensando em cloud, o registro no repositório da AWS é bem similar ao do Docker Hub, ou seja, você cria o repositório, faz o login, e faz o upload com o mesmo nome. Abaixo veremos passo a passo:

Primeiro criaremos o repositório público, clicando em ‘create repositor’, e depois colocamos o nome do repositório.

Depois do repositório criado, precisamos fazer o login nele. Como o comando docker login por padrão se registra no docker hub precisamos informar em qual repositório vamos logar.
É um “senhor” comando, contudo não se preocupe, no próprio repositório clicando em “View push commands” a AWS vai mostrar o comando inteiro.

aws ecr get-login-password –region us-east-1 –profile Sandbox | docker login –username AWS –password-stdin 787431072858.dkr.ecr.us-east-1.amazonaws.com

Obs.: Note que no meu exemplo, além do comando sugerido pela AWS coloquei o –profile Sandbox. Isso é necessário quando você está utilizando roles para acesso ao ambiente.
Sem esse parâmetro o push ia ficar em loop com o log de Retrying in X seconds

Após o registro é necessário criar a tag exatamente igual ao repositório (como é no Docker Hub), e depois o docker push para o repositório

docker tag thiagosagara/darede 787431072858.dkr.ecr.us-east-1.amazonaws.com/darede:latest

docker push 787431072858.dkr.ecr.us-east-1.amazonaws.com/darede:latest

E finalmente temos nossa imagem publicada no repositório da AWS (ECR). Note que em questão de compressão, o algoritmo da Docker Hub acaba sendo ligeiramente mais eficiente (2,5% melhor).

Veja os outros artigos sobre container:
Entendendo Docker
Docker Compose
Arquitetura Docker
O que é DockerFile?
Build do DockeFile

That’s all folks! Be Happy!!!

foto-thiago-marques

Thiago Marques
Technical Account Manager
thiago.marques@darede.com.br

Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.

OUTRAS PUBLICAÇÕES

Ramificações com o Git

Seguindo sua série de posts sobre Git, nosso #cloudspecialist Thiago Marques está de volta para falar sobre umas das principais funções do Git: as ramificações! Confere aí!

Toda empresa pode usar Machine Learning?

Entenda como o Machine Learning pode alavancar os resultados da sua empresa Atualmente ouvimos muito sobre Inteligência Artificial, Machine Learning, Deep Learning, NLP (Natural Language

MongoDB

Quer aprender sobre esta ferramenta de Banco de Dados não-relacional, como ela funciona e como poder instalar em qualquer sistema operacional e provedor de nuvem? Acompanhe sobre MongoDB

Entendendo Docker

O Docker é uma das melhores plataformas para o deploy de uma aplicação. Para entender sua funcionalidade, confira esse artigo em nosso blog!

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações