Conhecendo o Puppet Conteiner Registry

O Puppet Conteiner Registry é um novo produto da empresa Puppet (após a aquisição da empresa Distelli).

O objetivo desta ferramenta é fornecer uma interface web para visualização e gerenciamento de imagens Docker armazenadas num Docker Registry (um serviço semelhante ao Docker Hub, mas sem a interface web).

O Puppet Conteiner Registry esta disponível nas versões: Community Edition (CE), Team Edition (TE) e Enterprise Edition (EE). A versão CE é gratuita. As demais são pagas e o preço pode ser obtido na página https://puppet.com/products/puppet-container-registry#pricing. O código fonte está disponível em https://github.com/puppetlabs/europa.

Neste post vou mostrar como instalar e usar essa ferramenta.

Se você não sabe o que é Docker, recomendo começar lendo os links abaixo. É um longo caminho, mas vale a pena conhecer essa tecnologia.

http://blog.aeciopires.com/palestra-transportando-as-aplicacoes-entre-varios-ambientes-com-docker/
http://blog.aeciopires.com/primeiros-passos-com-docker/

Instalando o Puppet Conteiner Registry

1) Instale o Docker-CE seguindo as instruções das páginas abaixo de acordo com o sistema operacional.

No Ubuntu:
https://docs.docker.com/install/linux/docker-ce/ubuntu/
No CentOS:
https://docs.docker.com/install/linux/docker-ce/centos/
No Debian:
https://docs.docker.com/install/linux/docker-ce/debian/

Adicione o seu usuario ao grupo Docker.

sudo usermod -aG docker SEU-USUARIO
sudo setfacl -m user:SEU-USUARIO:rw /var/run/docker.sock

OPCIONAL: você pode configurar o Docker para ser inicializado no boot do sistema operacional seguindo as instruções da página: https://docs.docker.com/install/linux/linux-postinstall/

2) Execute o MySQL persistindo os dados fora do conteiner com os comandos abaixo. Mude a senha (em vermelho).

mkdir -p /docker/pcr_mysql/data
chown -R 27:27 /docker/pcr_mysql/data

docker run -d -p 3306:3306 \
 --restart=always \
 -v /docker/pcr_mysql/data:/var/lib/mysql \
 --name=mysql -e MYSQL_DATABASE=pcr \
 -e MYSQL_USER=pcr \
 -e MYSQL_PASSWORD=password \
 -e MYSQL_ROOT_PASSWORD=password \
mysql:5.7

3) Inicie o conteiner docker do Puppet Conteiner Registry. Informe a senha do banco criado no MySQL (em vermelho).

mkdir -p /docker/pcr/data

docker run -d -p 8080:80 -p 8443:443 --name pcr-ce \
 -v /docker/pcr/data:/docker/pcr/data
 --restart=always \
 -e EUROPA_DB_ENDPOINT=mysql://172.17.0.1:3306/pcr \
 -e EUROPA_DB_USER=pcr \
 -e EUROPA_DB_PASS=password \
 --link mysql:mysql \
distelli/europa:latest

4) O log pode ser visualizado com os comandos abaixo.

docker logs -f mysql
docker logs -f pcr-ce

5) Acesse o Puppet Conteiner Registry (PCR) na URL http://IP-SERVIDOR:8080 (com HTTP) ou https://IP-SERVIDOR:8443 (com HTTPS).

6) Na página inicial escolha a opção File System. Informe o diretório no qual serão armazenadas as imagens Docker. Exemplo: /docker/pcr/data. Desta forma, as imagens Docker serão armazenadas fora do conteiner no diretório /docker/pcr/data.

7) Na página http://IP-SERVIDOR:8080/settings?section=ssl, cadastre:

a) o nome DNS do host que está executando o PCR (configure um nome DNS no servidor DNS ou crie um entrada para o IP do host no arquivo /etc/hosts). Exemplo:

192.168.0.1 pcr.domain.com.br

b) a chave privada de um certificado SSL válido.

c) a chave pública de um certificado SSL válido.

d) a chave pública da autoridade certificadora que assinou o certificado SSL válido.

O certificado válido pode ser obtido gratuitamente nos sites abaixo (com duração de 90 dias, mas que pode ser renovado gratuitamente pelo mesmo período).

8) Na página http://IP-SERVIDOR:8080/repositories clique no botão CREATE TOKEN. Clique no botão de copiar o token e cole no terminal para se autenticar na ferramenta. Funciona de forma semelhante ao login no Docker Hub ou Docker Registry. Exemplo:

docker login -u TOKEN --password 15worc1otdhyb0aka4672qfr4q NOME_DNS_DO_HOST_PCR:8443
9) Faça a autenticação no Puppet Conteiner Registry (ver passo 8).
10) Baixe uma imagem do Docker Hub.
docker pull ubuntu:16.04
Associe uma tag a imagem baixada recentemente e associe ao PCR.
docker tag ubuntu:16.04 NOME_DNS_DO_HOST_PCR:8443/ubuntu:16.04
Envie a imagem para o PCR.
docker push NOME_DNS_DO_HOST_PCR:8443/ubuntu:16.04
Remova a imagem obtida do Docker Hub.
docker rmi ubuntu:16.04
Baixe a mesma imagem do PCR.
docker pull NOME_DNS_DO_HOST_PCR:8443/ubuntu:16.04

Visualize a imagem no PCR https://NOME_DNS_DO_HOST_PCR:8443/repositories. Esta mesma imagem está salva no diretório /docker/pcr/data/ fora do conteiner. De forma que se o conteiner for removido, os dados não serão perdidos.

Bons testes!

Para aprender mais sobre o Puppet, veja o livro que publiquei pela editora Novatec: https://novatec.com.br/livros/puppet/

Fonte:

https://puppet.com/docs/container-registry/free/index.html

https://puppet.com/docs/container-registry/free/demo.html

https://puppet.com/docs/container-registry/free/getting-started.html

https://puppet.com/docs/container-registry/free/ssl.html

https://puppet.com/docs/container-registry/free/docker.html

https://puppet.com/docs/container-registry/free/local-repo.html

OPCIONAL) Se quiser parar o conteiner, é só executar o comando abaixo.

docker stop pcr-ce
docker stop mysql

OPCIONAL) Para iniciá-lo novamente, execute o comando abaixo.

docker start mysql
docker start pcr-ce
OPCIONAL) Se precisar fazer o dump de todos os bancos de dados do conteiner MySQL criado anteriormente, use o comando abaixo.
docker exec mysql sh -c 'exec mysqldump pcr -uroot -p"password"' > /home/dump_mysql.sql
Lembrando que os dados do banco são persistidos no diretório /docker/pcr_mysql/data do Docker Host no qual o conteiner está sendo executado.
Se precisar restaurar o dump, use os comandos abaixo.
Remova o banco antigo e crie-o novamente.
docker exec -i -t mysql /bin/bash

root@4f39b60a2dde:/# mysql -u root -p
Enter password: 

mysql> drop database pcr;
mysql> create database pcr;
mysql> quit

root@4f39b60a2dde:/# exit

Restaure o dump no banco novo.

docker stop pcr-ce
docker exec -i mysql /usr/bin/mysql -uroot -ppassword --database=pcr < /home/dump_mysql.sql
docker start pcr-ce

ou

docker stop pcr-ce
cat /home/dump_mysql.sql | docker exec mysql sh -c 'exec /usr/bin/mysql -u root --password="password" pcr'
docker start pcr-ce

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *