O Docker Hub, no plano gratuito, oferece um repositório privado e limites de descarregamento de imagens. Cada imagem adicional ou limite de taxa de pull mais elevado requer um plano pago Pro ou Team, cobrado por utilizador mensalmente. O Docker Registry no Saplo é o teu próprio armazém privado de imagens Docker criadas, sob o teu domínio, com uma interface de navegador simples para navegar em repositórios, tags e camadas, sem limites de repositórios ou limites de descarregamento. Abaixo, vê como configurar o Docker Registry no Saplo, passo a passo.
Porquê um registo próprio em vez do Docker Hub
O Docker Hub é conveniente para começar, mas tem duas desvantagens que um registo próprio elimina:
- o plano gratuito do Docker Hub oferece apenas um repositório privado, cada imagem privada adicional requer um plano Pro pago (a partir de cerca de 4,50 € por mês) ou Team (a partir de cerca de 8,50 € por mês por utilizador), se mais pessoas trabalharem no projeto,
- as limites de pull rate limitam o número de vezes que um pipeline CI/CD ou um servidor de produção pode fazer pull de uma imagem por dia, o que, com implementações frequentes e muitas instâncias da mesma aplicação, pode efetivamente bloquear a implementação no pior momento,
- as imagens criadas no CI/CD da empresa e mantidas na nuvem pública de outra pessoa são dados fora do teu controlo, mesmo que o repositório esteja marcado como privado.
O Docker Registry no Saplo é a imagem oficial registry:2 (Docker Distribution) juntamente com uma UI de navegador, ambos num único contêiner Docker no teu Box. Os repositórios e downloads não são contados por ninguém, e o custo total é o custo do próprio Box, independentemente de quantas imagens e quantas vezes por dia o teu pipeline as descarrega.
Requisitos
Para instalar o Docker Registry no Saplo, precisas de:
- Uma Box com o Docker a funcionar (o motor ativa-o automaticamente ao instalar a partir do catálogo, é necessário o aninhamento no contentor, que o Saplo tem por padrão),
- Mínimo de 512 MB de RAM livres na Box e 10 GB de espaço em disco para as imagens, ou seja, o plano mais económico que suporta isso é a Box S por 27 € anuais,
- Um domínio ou subdomínio *.saploapp.pl incluído em todos os planos, para o registo e a UI,
- NÃO precisas de uma base de dados separada, o registo guarda as imagens construídas no volume de dados da aplicação, e não numa base de dados SQL.
Uma descrição completa da aplicação e a sua localização no catálogo podem ser encontradas na página Docker Registry no Saplo.
Instalação passo a passo
- No Painel Saplo, acede ao Catálogo de aplicações e seleciona Docker Registry.
- Escolhe uma Box com um mínimo de 512 MB de RAM livre e 10 GB de espaço em disco livre, bem como um domínio ou subdomínio sob o qual o registo será instalado.
- Confirma a instalação. O motor gera uma palavra-passe de administrador aleatória, guarda-a como um hash bcrypt (o único formato suportado pelo registo Docker no modo de autorização htpasswd), instala dois contentores,
registrya partir da imagem oficialregistry:2eregistry-uia partir da imagemjoxit/docker-registry-ui, e aguarda que a UI responda via HTTP antes de considerar a instalação concluída. - A UI funciona como um proxy reverso para a API do registo na mesma porta e domínio, portanto
docker login,docker pushedocker pullfuncionam diretamente no endereço da aplicação, sem portas adicionais e sem configuração CORS. - As credenciais de administrador (login, palavra-passe) são guardadas no ficheiro
DOCKER-REGISTRY-SETUP.txtno diretório da aplicação.
Primeiro uso
- Lê o nome de utilizador e a palavra-passe do ficheiro
DOCKER-REGISTRY-SETUP.txtno catálogo de aplicações (o nome de utilizador é, por predefinição,admin, e a palavra-passe é gerada aleatoriamente durante a instalação). - Inicia sessão a partir do Docker local com o comando
docker login seu-dominio.saploapp.ple insere o nome de utilizador e a palavra-passe do ficheiro. - Atribui uma etiqueta à imagem no endereço do registo, por exemplo
docker tag my-image:latest seu-dominio.saploapp.pl/my-image:latest, e envia-a com o comandodocker push. - Acede ao endereço do domínio no teu navegador, inicia sessão com o mesmo nome de utilizador e palavra-passe, e navega pelos repositórios, etiquetas e camadas na IU de joxit/docker-registry-ui.
- No servidor de produção ou no pipeline CI/CD, descarrega a imagem com o comando
docker pull seu-dominio.saploapp.pl/my-image:latest, depois de iniciar sessão com a mesma conta.
Docker Registry na Saplo vs Docker Hub
| Docker Hub Free | Docker Hub Pro/Team | Docker Registry na Saplo | |
|---|---|---|---|
| Limite de repositórios privados | um | ilimitado | ilimitado |
| Limite de pull rate | sim, para contas anónimas e gratuitas | mais alto, mas ainda contabilizado | nenhum |
| Onde estão as imagens | nos servidores da Docker Inc | nos servidores da Docker Inc | no teu Box |
| Custo | 0 USD, mas com limites | a partir de cerca de 5 USD por mês por utilizador | custo do Box (a partir de 27 € por ano) |
Perguntas frequentes
É necessário criar uma conta no Docker Hub ou noutro registo público?
Não, o Docker Registry no Saplo funciona de forma totalmente independente. O login para docker login é feito com o nome de utilizador e a palavra-passe gerados durante a instalação, sem necessidade de uma conta de um fornecedor externo.
Existe um limite para o número de imagens ou de downloads? Não, a única restrição é o espaço em disco da Box que compras no plano.
É possível alterar a palavra-passe do administrador?
Sim, podes gerar um novo hash bcrypt com o contentor único httpd:2.4-alpine (docker run --rm httpd:2.4-alpine htpasswd -Bbn user password), substituir o ficheiro htpasswd na pasta da aplicação e reiniciar o contentor do registo.
O registo requer uma base de dados separada? Não, as imagens e os seus metadados são armazenados no volume de dados do contentor do registo, sem necessidade de uma base de dados MySQL ou Postgres separada.
É possível eliminar imagens e tags antigas?
Sim, a eliminação de imagens está ativada (REGISTRY_STORAGE_DELETE_ENABLED) e disponível diretamente na UI do navegador, sem necessidade de aceder via SSH.
Se atualmente pagas pelo Docker Hub Pro ou Team apenas para ter mais do que um repositório privado, escreve-nos, nós vamos ajudar-te a configurar o teu próprio registo.
- #CI/CD
- #DevOps
- #Docker
- #Guia
