Nesse tutorial, vamos usar o docker compose para fazer push e pull de imagens para um repositório local de imagens.
Vamos iniciar coma configuração do docker registry, o Docker Registry é uma ferramenta oficial do Docker para armazenar e gerenciar imagens Docker.
Esse Tutorial Faz Parte do Treinamento Docker Compose para Desenvolvedores
Vamos começar:
Certifique-se de ter acesso ao servidor “dockersrv” via SSH ou algum outro método de acesso remoto.
Se o Docker ainda não estiver instalado no seu servidor, você pode fazer isso com os seguintes comandos:
1 2 |
sudo apt update sudo apt install docker.io |
Verifique se o Docker foi instalado corretamente:
1 |
docker --version |
Como Configurar o Docker Registry
Execute o seguinte comando para iniciar um contêiner Docker Registry:
1 |
docker run -d -p 5000:5000 --restart=always --name registry registry:2 |
Isso iniciará o Docker Registry na porta 5000 e configurará o contêiner para reiniciar sempre que o servidor for reiniciado.
Verifique se o contêiner do Docker Registry está em execução:
1 |
docker ps |
Identique o container, veja que você terá um container com o nome registry.
Preparação das Imagens para o Docker Registry
Agora, vamos preparar as imagens Docker que você deseja armazenar no seu repositório. Você pode construir essas imagens localmente ou trazê-las de algum registro público, como o Docker Hub.
Suponha que você tenha uma imagem chamada “custom-nginx” e deseja carregá-la no seu repositório local.
Renomeie a imagem para que ela esteja no formato apropriado para o seu repositório local:
1 |
docker tag minha-imagem localhost:5000/minha-imagem |
1 |
docker push localhost:5000/minha-imagem |
Agora vamos parar o container e usar o Docker Compose para que o registro seja um serviço.
Identifique o container do registro e elimine o container.
1 |
docker ps |
Pegue o id da imagem para remover o container:
1 |
docker stop 30e1d4762426 |
Identifique e Remova a imagem:
1 |
docker rmi registry:2 -f |
Agora podemos continuar e criar nosso setup de docker registry com docker compose.
Vamos criar um arquivo chamado docker-compose.yml
em um diretório de trabalho de sua escolha. Adicione o seguinte conteúdo ao arquivo:
1 2 3 4 5 6 7 8 9 10 |
version: '3' services: registry: image: registry:2 ports: - 5000:5000 volumes: - ./config.yml:/etc/docker/registry/config.yml - /usr/local/repository:/var/lib/registry restart: always |
Salve o arquivo docker-compose.yml
.
Criando o arquivo config.yml
Em seguida, vamos criar outro arquivo chamado config.yml
no mesmo diretório. A intenção é permitir que outros hosts sejam capazes de armazenar imagens nesse docker host.
Adicione o seguinte conteúdo ao arquivo:
1 2 3 4 5 6 7 8 9 10 11 |
version: 0.1 log: level: debug formatter: json storage: filesystem: rootdirectory: /var/lib/registry http: addr: :5000 headers: X-Content-Type-Options: [nosniff] |
Salve o arquivo config.yml
.
Iniciando o registro como um serviço do Docker Compose
Agora, vamos iniciar o registro como um serviço do Docker Compose. Execute o seguinte comando no terminal:
1 |
docker-compose up -d |
Isso iniciará o registro como um serviço usando a configuração definida no arquivo docker-compose.yml
.
O parâmetro -d
inicia o serviço em modo “detached” (em segundo plano).
Testando o registro com o Docker Compose
Agora que o registro está em execução, você pode usar o Docker Compose para fazer push e pull de imagens.
Para fazer push de uma imagem para o registro, você pode usar o seguinte comando no diretório onde sua imagem está localizada:
1 |
docker-compose push nome_do_servico |
Lembre-se: Substitua nome_do_servico
pelo nome do serviço que contém a imagem que você deseja fazer push. Por exemplo, se o serviço for chamado app
, o comando seria:
1 |
docker-compose push app |
Isso empurrará a imagem para o registro local.
Para fazer pull de uma imagem do registro, use o seguinte comando:
1 |
docker-compose pull nome_do_servico |
Substitua nome_do_servico
pelo nome do serviço que contém a imagem que você deseja puxar. Por exemplo, se o serviço for chamado app
, o comando seria:
1 |
docker-compose pull app |
Isso buscará a imagem do registro local. Mas pode ser que se você estiver no mesmo host, o compose não faça o pull alegando que as imagens não tem alterações.
Conclusão
Agora você configurou com sucesso o registro como um serviço do Docker Compose. Você pode usar o Docker Compose para fazer push e pull de imagens usando o registro local.
Neste tutorial, recriamos os passos anteriores usando o Docker Compose. Configuramos o serviço do registro no arquivo docker-compose.yml
, iniciamos o serviço com o comando docker-compose up -d
e usamos os comandos docker-compose push
e docker-compose pull
para interagir com o registro.
Sinta-se à vontade para explorar mais recursos e configurações do Docker Compose para personalizar seu ambiente. Se você tiver alguma dúvida ou precisar de ajuda adicional, por favor, deixe um comentário. Happy coding!