Container-Registry-blog

Container Registry

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

Microsserviços

Conforme o uso de cloud computing começa a se popularizar, obtemos arquiteturas cada vez mais complexas, gerando a necessidade de atualizações frequentes e ágeis, por

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