Docker Registry — Entendendo melhor

Para quem já conhece ou está acostumado o que vou explicar pode parecer simples, mas para quem está começando e aprendendo/descobrindo o mundo Docker/Linux, acredito que esta explicação pode ajudar.

Docker Registry

Mas e quando você tem projetos privados e não pode publicar em um repositório publico (a menos que você queira claro), para isso existem muitos serviços na web a grande maioria pagos (se você conhecer alguns gratuitos compartilha comigo), o próprio Docker Hub oferece gratuitamente 1 (registro ou espaço) para armazenar sua imagem de forma privada, mas só 1, se você precisar de mais terá que assinar um plano, deixo no final uma pesquisa bem rápida dos repositórios e seus preços.

Eu até paguei o DockerHub para ter mais repositórios, fiz uma integração dele com github tudo que fazia commit no github ele já baixava e compilava, uma maravilha, mas a demora em compilar e algumas vezes alguns processos de build ficaram travados por horas desisti e cancelei minha assinatura.

Armazenar imagens de forma privada

Porque usar um Docker Registry?

Como fazer

1º — Um container Docker Registry criado manualmente deve ter uma segurança básica e você pode aprender a fazer olhando esta documentação.

2º —Para fazer login no seu docker registry ou efetuar o envio (push) seja por qual for a ferramenta ele vai transformar seu IP ou domínio para https, exemplo, meu docker registry está em example.com ao tentar efetuar um login nele usando os comandos:

docker login example.com:5000

Ele vai pedir usuário e senha, após digitar você pode receber uma mensagem:

Error response from daemon: Get https://example.com:5000/v2/: http: server gave HTTP response to HTTPS client

Então podemos remover essa segurança/obrigatoriedade dos 2 lados, no client e no server (docker registry)

No Linux

sudo nano /etc/docker/daemon.json

E cole o conteúdo:

{
“insecure-registries”: [“example.com:5000”]
}

Reinicie o docker:

sudo systemctl restart docker

No Windows

%programdata%\docker\config\daemon.json

Obtive isto do manual, mas não consegui encontrar então fiz na interface do docker mesmo abaixo print

Windows configurando para permitir utilizar um registry sem HTTPS ao domínio: exaple.com na porta 5000

No Windows ao mudar a configuração aperte “aplicar e reiniciar”.

Feito o processo acima para Windows ou Linux, tente fazer o login novamente….

docker login example.com:5000

Sucesso!!

Pronto agora você já pode publicar suas imagens no seu repositório de imagens, você pode fazer isso por linha de comando ou usar ferramentas como o próprio Visual Studio, abaixo vou explicar.

Publicando com Visual Studio

Visual Studio

Publicando por linha de comando

Após ter sua imagem gerada, o que você precisa fazer é criar uma tag para imagem que você quer subir no seu docker registry então digitamos:

docker tag NomeImagemLocal example.com:5000/nomeImagemNoServer:TagDaImagem (normalmente latest)

Vale lembrar que para fazer isso você já deve ter efetuado login no seu registry como expliquei acima.

Depois para publicar sua imagem:

docker push exaple.com:5000/nomeImagemNoServer:TagDaImagem

Pronto!!
Espero ter ajudado.

Repositórios e preços

Docker Hub eles chamam de Repositório como falei acima ele permite 1 repositório de imagem privada, para mais deve ser feito assinatura.
Você pode conferir os preços aqui

GitLab Container Registry não encontrei muita informação detalhada
Você pode conferir os preços aqui

Azure Container Registry é pago mas não tenho muitas informações se tem planos gratuitos.
Você pode conferir os preços aqui.

Desenvolvedor há mais de 20 anos, atualmente estou me especializando em ASP.NET CORE com Linux.

Desenvolvedor há mais de 20 anos, atualmente estou me especializando em ASP.NET CORE com Linux.