Configurando e executando um Container Registry no Linux
As imagens do contêiner Docker são entregues e armazenadas por um aplicativo chamado Docker Registry. Os registros consolidam imagens de contêiner e aceleram o tempo de criação do desenvolvedor. A virtualização fornece o mesmo ambiente de execução, mas a criação de uma imagem pode exigir esforço. A orquestração de contêineres é bem-sucedida ao empregar contêineres. Este tutorial ensina como configurar um registro Docker privado e configurá-lo para acesso público.
Registro de contêiner Jfrog: o que é?
Todas as facetas de implantação, administração, expansão e rede de contêineres são automatizadas por meio da orquestração de contêineres. Como resultado, as empresas que controlam um grande número de servidores e contêineres Linux®, por exemplo, podem lucrar com a orquestração de contêineres.
O maior e melhor registro para Kubernetes é o registro de contêiner da JFrog, que lida com repositórios Helm Chart e contêineres Docker. Organize suas imagens Docker em um único local, eliminando as dificuldades de limitação e retenção do Docker Hub. O JFrog se conecta ao seu ambiente de desenvolvimento para permitir acesso seguro, preciso e rápido a registros externos de contêineres Docker. Você construirá seu próprio Docker Registry no Linux neste tutorial.
Instalando e configurando o Private Docker Registry no Linux
Etapa 01:
O Docker na linha de comando é útil para iniciar e testar contêineres, mas se torna complicado para implantações maiores que exigem muitas instâncias paralelas.
Docker Compose pode usar um arquivo .yml para configurar a configuração de cada contêiner e os dados necessários para interagir com outros contêineres. Você pode fornecer instruções para cada uma das partes que compõem seu aplicativo e gerenciá-las coletivamente usando a ferramenta de linha de comando docker-compose.
Você usará o Docker Compose para administrar o Docker Registry porque é um programa com vários componentes próprios. Você deve criar um arquivo docker-compose.yml para especificar o registro e o local de armazenamento onde seus dados serão mantidos antes de poder iniciar uma instância do registro.
As configurações serão mantidas no servidor primário em um diretório docker-registry. Execute o comando para criá-lo:
mkdir ~/docker-registry
Navegue até:
cd ~/docker-registry
Em seguida, crie uma subpasta chamada dados onde serão armazenadas as fotos do seu registro:
dados mkdir
Executando o seguinte comando, crie e abra um arquivo chamado docker-compose.yml:
nano docker-compose.yml
O código a seguir define uma instância básica de um Docker Registry:
versão: ‘3’
Serviços:
registro:
imagem: registro: 2
portos:
– “5000:5000”
ambiente:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /dados
volumes:
– ./dados:/dados
Você pode inicializar a configuração executando o comando “docker-compose up”.
Etapa 02:
Você configurou HTTPS em seu domínio como parte dos requisitos. Portanto, você só precisa configurar o Nginx para direcionar o tráfego do seu domínio para o contêiner de registro, a fim de expor seu Docker Registry protegido lá.
A configuração do seu servidor já está definida no arquivo /etc/nginx/sites-available/seu domínio. Execute este comando para modificá-lo:
sudo nano /etc/nginx/sites-available/seu_domínio
Seu registro estará aguardando na porta 5000, portanto, você deverá encaminhar todo o tráfego para lá. Para obter mais informações do host sobre a solicitação em si, você precisa incluir adicionalmente cabeçalhos na solicitação roteada para o registro. As seguintes linhas devem ser adicionadas ao bloco de localização no lugar do conteúdo atual:
localização/{
# Não permite conexões do docker 1.5 e anteriores
# docker pré-1.6.0 não configurou corretamente o agente do usuário no ping, capture os agentes do usuário “Go *”
if ($http_user_agent ~ “^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go .*$” ) {
retornar 404;
}
proxy_pass http://localhost:5000;
proxy_set_header Host $http_host; # necessário para o cliente docker
proxy_set_header X-Real-IP $remote_addr; # passar o IP real do cliente
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
Depois de terminar, você pode salvar e fechar o arquivo e reiniciar o Nginx para aplicar as alterações. Depois de configurar o encaminhamento de porta, você avançará para fortalecer a segurança do seu registro.
Etapa 03:
Você pode usar a autenticação HTTP para restringir o acesso ao seu Docker Registry, configurando-o no Nginx para os sites que ele administra. Para fazer isso, você usará htpasswd para construir um arquivo de autenticação e adicionar nele combinações válidas de nome de usuário e senha.
Ao instalar o pacote apache2-utils, você pode obter a ferramenta htpasswd. Clique aqui para ver as etapas de instalação do pacote.
O arquivo de autenticação e as credenciais devem ser mantidos em /docker-registry/auth. Crie-o executando:
mkdir ~/docker-registry/auth
Navegue até ele:
cd ~/docker-registry/auth
Substitua nome de usuário pelo nome de usuário que você deseja usar ao criar o primeiro usuário. O algoritmo bcrypt é aquele exigido pelo Docker, e a opção -B comanda seu uso:
htpasswd -Bc registro.nome de usuário da senha
Quando solicitado, forneça a senha; Registry.password será então adicionado com a combinação de credenciais.
Você deve alterar docker-compose.yml para instruir o Docker a utilizar o arquivo que você preparou para autenticar usuários agora que a lista de credenciais foi estabelecida. O arquivo pode ser aberto executando o seguinte comando:
nano ~/docker-registry/docker-compose.yml
Etapa 04:
Ao dizer ao Docker Compose para mantê-lo em execução, você pode garantir que o contêiner de registro seja iniciado sempre que o sistema for inicializado ou se recuperar de uma falha. Isso é feito digitando o seguinte comando no bloco de registro:
reiniciar: sempre
Etapa 05:
Você deve certificar-se de que seu registro pode lidar com uploads de arquivos enormes antes de enviar uma imagem para ele.
A restrição de tamanho de upload de arquivo padrão do Nginx é de 1 m, o que é muito pouco para imagens Docker. Para aumentá-lo, você deve alterar o arquivo de configuração principal /etc/nginx/nginx.conf. Execute este comando para modificá-lo:
sudo nano /etc/nginx/nginx.conf
Adicione a seguinte linha à seção http:
cliente_max_body_size 16384m;
Salve o arquivo e reinicie o Nginx.
Pensamentos finais
Seu registro Docker está instalado e funcionando. Primeiro, você criou seu próprio registro Docker neste guia. Em seguida, você configurou a autenticação SSL e HTTP e instalou os requisitos necessários. Leia mais sobre como fazer backup de contêineres Docker.
As imagens locais do Docker são mantidas em um registro privado do Kubernetes oferecido pelo JFrog. Ele permite que você se conecte a cada camada de cada um dos seus aplicativos e tenha controle e visibilidade completos sobre o processo de código para cluster.