Pesquisa de site

Como enviar e extrair imagens do Docker com o Container Registry da DigitalOcean


O Container Registry da DigitalOcean oferece um espaço privado na nuvem para armazenar e distribuir suas imagens do Docker. Além de oferecer um repositório de imagens, o serviço também se integra aos outros serviços da DigitalOcean. Você pode implantar imagens armazenadas na App Platform e usá-las com seus clusters Managed Kubernetes.

Benefícios e recursos

O Container Registry é um concorrente do Docker Hub que permite manter suas imagens do Docker em sua conta da DigitalOcean. É ideal quando você acessa essas imagens com outros recursos da DigitalOcean. Você não precisa configurar uma conta paga separada do Docker Hub para as imagens privadas do seu aplicativo.

Os dados mantidos no Container Registry são balanceados automaticamente em várias regiões de datacenter da DigitalOcean. Isso acelera a recuperação de imagens quando você inicia contêineres e os puxa para sua máquina. Ao contrário de outros recursos da DigitalOcean, você não pode selecionar manualmente o datacenter de um Container Registry.

A implementação de registro da DigitalOcean é compatível com OCI para que você possa interagir com ela usando ferramentas familiares do ecossistema. Comandos como docker push e docker pull simplesmente funcionarão depois que você adicionar as credenciais do seu registro à sua CLI. Da mesma forma, orquestradores como o Kubernetes não terão problemas para referenciar imagens em seu registro.

Criando um registro

O Container Registry está disponível gratuitamente, mas o plano gratuito vem com algumas limitações severas. Você obtém um repositório de imagens (nome de imagem de nível superior), 500 MB de armazenamento e um limite de transferência de dados de saída de 500 MB – adequado para avaliar o serviço, mas provavelmente não adequado para uso a longo prazo. O plano Básico de $5/mês oferece cinco repositórios e 5 GB, enquanto a versão Profissional de $20/mês vem com repositórios ilimitados e 100 GB de armazenamento. Os excedentes de armazenamento são cobrados em US$0,02/GB.

Crie um registro fazendo login no painel de controle da DigitalOcean e clicando no link “Container Registry” na barra lateral esquerda. Dê um nome ao seu novo registro e selecione seu plano de armazenamento. O nome deve ser globalmente exclusivo em cada registro da DigitalOcean, portanto, sua primeira escolha pode não estar disponível. Ele precisa consistir em até 63 caracteres, incluindo letras, números e hífens.

Pode levar alguns segundos para criar um novo registro. Você será direcionado para a tela do painel do seu registro assim que o processo for concluído.

Conectando sua CLI do Docker

Sua próxima etapa é conectar sua CLI do Docker ao registro. Você precisa fornecer ao Docker suas credenciais de registro para que ele possa enviar e extrair imagens usando sua conta. Existem três maneiras diferentes de conseguir isso.

Usando Doctl

O utilitário de linha de comando oficial da DigitalOcean, Doctl, inclui um script de conveniência que configura seu cliente Docker para trabalhar com seu Container Registry.

Você precisará ter o Doctl instalado e autenticado em sua conta da DigitalOcean para usar este método. Execute o seguinte comando para configurar a integração:

doctl registry login

Usando um token de API da DigitalOcean

Os tokens de API da DigitalOcean podem ser usados para autenticação em registros de contêiner. Gere um token clicando no link “API” na parte inferior da barra lateral esquerda em sua conta da DigitalOcean. Clique em “Gerar novo token”, dê um nome a ele e pressione “Gerar token” no pop-up a seguir.

O valor do token será exibido. Anote isso, pois você não poderá recuperá-lo mais tarde. Agora retorne à sua CLI e use o comando docker login para se conectar ao seu registro:

docker login registry.linux-console.net

Você será solicitado a fornecer um nome de usuário e senha. Use o valor do token de API gerado para ambos os campos. O Docker agora poderá interagir com os registros da DigitalOcean que pertencem à sua conta.

Baixando um arquivo de credenciais do Docker

Se você não deseja gerar uma chave de API ou usar Doctl, vá para a página do painel do Container Registry e clique no botão azul “Ações” no canto superior direito. Selecione “Baixar credenciais do Docker” no menu.

Este arquivo é um config.json compatível com Docker que inclui as credenciais para seu registro. Você pode mesclá-lo com seu arquivo ~/.docker/config.json principal ou usar o sinalizador --config com os comandos docker:

docker --config ~/downloaded-config.json pull registry.linux-console.net/<your-registry-name>/example-image:latest

Usando o Docker para enviar e extrair imagens

Com o Docker configurado corretamente, agora você pode usar a CLI para enviar e receber imagens com seu Container Registry. As imagens devem ser marcadas no seguinte formato:

registry.linux-console.net/<your-registry-name>/example-image:latest

Aqui está um exemplo simples de como enviar uma cópia de uma imagem existente para o seu registro:

docker pull httpd:latest
docker tag httpd:latest registry.linux-console.net/<your-registry-name>/httpd:latest
docker push registry.linux-console.net/<your-registry-name>/httpd:latest

Vá para o painel do seu registro no painel de controle da DigitalOcean. Sua imagem recém-enviada deve aparecer em seu registro. Você pode clicar na imagem para ver as tags disponíveis. Exclua uma tag específica ou todas as tags disponíveis para uma imagem clicando no ícone de três pontos na extrema direita e selecionando no menu.

Coleta de lixo

Excluir imagens do registro pode deixar para trás camadas redundantes que não são mais usadas por nenhum manifesto restante. Essas camadas ainda serão contabilizadas em seu custo de armazenamento.

A DigitalOcean fornece um recurso de coleta de lixo para remover camadas e manifestos órfãos. Você verá um bloco na tela do painel do registro quando a coleta de lixo puder liberar espaço de armazenamento. Clique em “Esvaziar lixo” para iniciar o processo.

Você verá uma caixa de diálogo pop-up que permite escolher se deseja remover manifestos não marcados como parte da limpeza. Estas são imagens válidas que não possuem tag atribuída, portanto, elas só podem ser referenciadas por seu ID completo, como registry.linux-console.net//example-image:a1bc23. A exclusão desses manifestos geralmente é desejável, a menos que você os retenha intencionalmente.

A coleta de lixo coloca seu registro em um estado somente leitura até que todas as camadas não utilizadas tenham sido excluídas. Novos pushes serão rejeitados durante a limpeza. A coleta não começa até que as gravações existentes sejam concluídas, portanto, pode haver um pequeno atraso após o início do processo. O progresso é exibido na página do painel do seu registro no painel de controle.

A DigitalOcean não oferece coleta automática de lixo. No entanto, é possível executar o processo usando Doctl e a API da DigitalOcean para que você possa escrever seu próprio script e agendá-lo com cron.

Conclusão

O Container Registry da DigitalOcean oferece uma maneira conveniente de armazenar imagens do Docker. Você se autentica no registro usando um token existente da API da DigitalOcean. Você deve ter em mente que os tokens de API fornecem acesso total à sua conta – eles não se limitam ao acesso ao registro.

Se você deve usar o Container Registry em favor do Docker Hub, depende do que você fará com as imagens. Se você for implantá-los na DigitalOcean, faz sentido colocar suas imagens junto com sua infraestrutura, maximizando o desempenho. O Docker Hub tem benefícios em outras áreas, como reconstruções automáticas de imagens e verificações de vulnerabilidade que podem sinalizar problemas de segurança rapidamente. O serviço da DigitalOcean não possui nenhum desses, concentrando-se no armazenamento de imagens puro e simples.

Artigos relacionados: