quarta-feira, 22 de fevereiro de 2017

Docker :: Fazendo Deploy de um Docker Registry Privado



O Registry é uma aplicação Server Site que guarda imagens Docker para distribuição entre aplicações, desenvolvedores, ambientes de CI e etc. O mais famoso deles é o Docker Hub, uma ferramenta fantástica para compartilhamento de imagens. Porém a mesma é pública... Caso exista a necessidade de migrar suas imagens para um servidor privado, podemos fazer o deploy de um registry pessoal muito rápido utilizando o próprio Docker.

Fazendo Deploy do seu servidor via Docker CLI

Para criar um servidor que hospedará suas imagens geradas pelo Docker, utilizaremos a imagem oficial do Registry disponibilizada pela própria Docker. Essa é a forma mais simplista de fazer o deploy.
 $ docker run -d -p 5000:5000 --restart=always --name registry registry:2  

Dados persistentes

Para mapear um volume externo para dentro do container para persistir os dados das nossas imagens, temos que mapear alguma pasta externa para o diretório /var/lib/registry dentro do container do Registry.
 $ docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/data:/var/lib/registry registry:2  

Enviando imagens para nosso Registry Privado

Essa é a maneira mais simplista de subir e enviar uma imagem buildada para nosso Registry.
Para isso, faremos o pull normal de uma imagem do MySQL na versão 5.7. Depois vamos gerar uma tag do nosso MySQL informando o novo nome, o ip do servidor do Registry e a porta do mesmo, que no caso, será 5000.

 $ docker pull mysql:5.7   
 $ docker tag mysql:5.7 ip-do-servidor:5000/meumysql  


Fazendo o Pull e Push das nossas imagens do Registry

 $ docker push ip-do-servidor:5000/meumysql  

e para fazer o Download das imagens...
 $ docker pull ip-do-servidor:5000/meumysql  


Fazendo Deploy pelo Composer


Criando uma Stack via Composer com imagens do servidor remoto


Para fazer download de um servidor privado a partir do docker-compose, basta dizer na imagem, qual vai ser o seudominioouip/imagem:versao


Fazendo um login autenticado no Docker Registry

Vamos subir um container somente para gerar um htpasswd no Registry. Vamos salvar o resultado dentro do arquivo auth/htpasswd. Isso irá gerar um usuário e senha no padrão Unix.

 $ mkdir auth  
 $ docker run --entrypoint htpasswd registry:2 -Bbn matheus senhadomatheus > auth/htpasswd  


Para subir o Registry pronto para utilizar o arquivo de autenticação que acabamos de criar, basta utilizar o mesmo comando que utilizamos anteriormente, porém adicionando mais algumas variáveis de ambiente que vão trabalhar com o arquivo htpasswd que acabamos de criar

 $ docker run -it -p 5000:5000 --restart=always -v `pwd`/data:/var/lib/registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" registry:2  

Ou você fazer o deploy via Compose passando as variáveis de ambiente que definem os parâmetros de usuário e senha do Registry

Agora é só efetuar o login
 $ docker login  



Espero ter ajudado :)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Analista DevOps e Desenvolvedor Web Backend. Apaixonado por Linux, Arquitetura, API's, Containers, Integração, Código, Testes, Escalabilidade e Cloud. :)

1 comentários:

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com