Armazém privado local, implantação e gerenciamento de armazém privado portuário

1. Armazém privado local

1. Introdução ao armazém privado local

docker armazém local, armazenar imagens, upload e download de máquina local, pull/push.
Há muitas vantagens em usar um repositório privado:

(1) Para economizar largura de banda da rede, não é necessário que todos vão ao armazém central para baixar cada imagem, mas apenas baixá-la do armazém privado;

(2) Fornecer utilização de recursos espelhados e enviar as imagens espelhadas usadas dentro da empresa para o armazém privado local para uso pelo pessoal relevante dentro da empresa

2. Construa um armazém privado local

docker pull registry 
docker pull centos:7
#下载registry镜像
vim /etc/docker/daemon.json
#daemon.json中添加私有镜像仓库地址,内容如下
 
{
 
	"insecure-registries":["192.168.174.15:5000"],
#此行注意填写自己的ip注意最后有逗号
 
    "registry-mirrors": ["https://b0u3e8x4.mirror.aliyuncs.com"]
 
}
systemctl   restart  docker.service
#重启docker服务使本地私有仓库生效
docker run -itd -v /data/registry:/var/lib/registry  -p  5000:5000 --restart=always  --name registry registry:latest
418579afd83828f93b3b73066fa25437a9a909922c26689d844390aedc359e29
#运行registry容器,-v指定数据卷挂载目录,-p指定映射端口号,--restart=always容器重启策略即开机自启此容器
docker tag centos:7 192.168.174.15:5000/centos:v1  
#为镜像重新打私有仓库标签
docker  push  192.168.174.15:5000/centos:v1  
#将v1版本上传到私有仓库中
curl   192.168.174.15:5000/v2/_catalog    
#列出私有仓库的所有镜像
curl    192.168.174.15:5000/v2/centos/tags/list   
#李处私有仓库中centos的所有标签镜像
docker  rmi    192.168.174.15:5000/centos:v1  
#删除本地原有v1镜像
docker pull 192.168.174.15:5000/centos:v1  
#测试从私有仓库下载v1镜像

insira a descrição da imagem aqui

3. Introdução à estratégia de reinicialização de contêineres

Estratégia efeito
não Por padrão, o contêiner sai sem reiniciar
em caso de falha O contêiner sai de forma anormal e reinicia o contêiner
em caso de falha O contêiner sai de forma anormal e reinicia o contêiner até 4 vezes
sempre Sair sempre reinicia o contêiner
a menos que seja parado Sempre reinicie os contêineres quando eles saírem, mas desconsidere os contêineres que foram interrompidos quando o daemon do Docker foi iniciado

2. Implantação e gerenciamento de armazém privado portuário

1. o que é porto

Harbour é um projeto Docker Registry de código aberto da VMware, cujo objetivo é ajudar os usuários a construir rapidamente um serviço Docker Registry de nível empresarial.

Com base no registro de código aberto do Docker, o Harbour fornece interface de gerenciamento gráfico, controle de acesso baseado em função (controle de acesso baseado em função), integração AD/LDAP e registro de auditoria (registro de auditoria) e outras funções exigidas por usuários corporativos, e restaura o chinês nativo suporte.

Cada componente do Harbour é construído como um contêiner Docker, que é implantado usando docker-compose. O modelo docker-compose para implantação do Harbour está localizado em harbour/docker-compose.yml.

2. As características do Porto

(1) Controle baseado em funções: usuários e armazéns são organizados com base em projetos e os usuários podem ter diferentes permissões nos projetos.

(2) Estratégia de replicação baseada em espelho: Os espelhos podem ser replicados (sincronizados) entre várias instâncias do Harbor.

(3) Suporte LDAP/AD: Harbour pode integrar o AD/LDAP existente (semelhante a uma tabela em um banco de dados) dentro da empresa para autenticar e gerenciar usuários existentes.

(4) Exclusão de imagem e coleta de lixo: A imagem pode ser excluída e o espaço ocupado pela imagem também pode ser recuperado.

(5) Interface gráfica do usuário: os usuários podem navegar por um navegador, pesquisar armazéns espelhados e gerenciar projetos.

(6) Gestão de auditoria: Todas as operações no armazém espelho podem ser registradas e rastreadas para gestão de auditoria.

(7) Suporte à API RESTful: A API RESTful fornece aos administradores mais controle sobre o Harbor, facilitando a integração com outros softwares de gerenciamento.

(8) A relação entre o Harbour e o registro do Docker: o Harbour encapsula essencialmente o registro do Docker e estende seu próprio modelo de negócios.

3. A composição do Porto

Em termos de arquitetura, o Harbour possui principalmente seis componentes: Proxy, Registro, Serviços principais, Banco de dados (Harbor-db), Coletor de log (Harbor-log) e Serviços de trabalho.

(1) Proxy: É um proxy front-end do nginx. O registro do Harbor, a UI, o serviço de token e outros componentes estão todos por trás do proxy reverso nginx. O proxy encaminha solicitações de navegadores e clientes docker para diferentes serviços de back-end.

(2) Registro: Responsável por armazenar imagens Docker e processar comandos push/pull do Docker. Devido à necessidade de controlar o acesso dos usuários, ou seja, diferentes usuários possuem diferentes permissões de leitura e gravação para imagens Docker, o Registro apontará para um serviço de Token, forçando os usuários a carregar um Token legal para cada solicitação pull/push do Docker, e o O registro passará a chave pública para descriptografar e verificar o token.

(3) Serviços principais: As funções principais do Harbour fornecem principalmente os três serviços a seguir: 1) UI (harbor-ui): Fornece uma interface gráfica para ajudar os usuários a gerenciar imagens no Registro e autorizar usuários. 2) WebHook: Para obter a tempo a mudança de status da imagem no Registro, configure um Webhook no Registro para passar a mudança de status para o módulo UI. 3) Serviço de token: Responsável por emitir Tokens para cada comando push/pull do Docker de acordo com as permissões do usuário. Caso a solicitação iniciada pelo cliente Docker ao serviço de Registro não contenha Token, ele será redirecionado para o serviço de Token, e após obter o Token fará uma nova solicitação ao Registro.

(4) Banco de dados (harbor-db): Fornece serviços de banco de dados para serviços principais e é responsável por armazenar dados como permissões de usuário, logs de auditoria e informações de agrupamento de imagens Docker.

(5) Serviços de trabalho: usados ​​principalmente para replicação de espelho, o espelho local pode ser sincronizado com a instância remota do Harbour.

(6) Coletor de toras (harbor-log): Responsável por coletar toras de outros componentes em um local.
insira a descrição da imagem aqui

4. Implantação e configuração do porto

(1) Implantar docker-compose

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#下载docker-compose包
chmod +x /usr/local/bin/docker-compose
#添加权限
docker-compose --version
#查看版本

insira a descrição da imagem aqui

(2) Implantar serviço Harbor

cd /opt
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
#将harbor压缩包传到/opt目录下,解压到/usr/local目录下
vim /usr/local/harbor/harbor.cfg
#修改harbor配置文件内容如下
hostname = 192.168.174.15
#第5行修改,设置为Harbor服务器的IP地址或者域名
harbor_admin_password = Harbor12345
第59行指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345可不修改,保存退出
cd /usr/local/harbor/
./prepare
./install.sh
#进入harbor目录执行脚本检查安装harbor
docker-compose ps
#安装成功够在本目录查看

insira a descrição da imagem aqui

insira a descrição da imagem aqui

(3) Faça login para criar um projeto

  • Acesse o navegador http://192.168.174.15 para fazer login na interface Harbour WEB UI, o nome de usuário e senha do administrador padrão é admin/Harbor12345

[Falha na transferência de imagem do link externo, o site de origem pode ter um mecanismo anti-leeching, é recomendado salvar a imagem e carregá-la diretamente (img-orahT91d-1692951129390) (C:\Users\yuyong\Desktop\Notes\Picture\ 3813.png)]

  • Crie um novo projeto após login bem-sucedido
    insira a descrição da imagem aqui

(4) Faça login no armazém e carregue a imagem

#192.168.174.15上操作即搭建私有仓库的服务端
docker login -u admin -p Harbor12345  http://127.0.0.1
#登录到私有仓库中
docker images
#查看本机有哪些镜像
docker tag centos:7  127.0.0.1/myproject-exo/centos:v1
#nginx重新打标签为私有仓库项目下的centos:v1版本
docker push 127.0.0.1/myproject-exo/centos:v1
#将此镜像上传到私有仓库的myproject-exo项目

insira a descrição da imagem aqui
insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

5. Teste de cliente

(1) Solução de problemas de erros de login
Quando outros clientes fazem login no Harbor, os seguintes erros serão relatados. A razão para esse problema é que a interação do Docker Registry usa HTTPS por padrão, mas o serviço HTTP padrão é usado para construir uma imagem privada, portanto, o seguinte erro ocorre ao interagir com uma imagem privada.

docker login -u admin -p Harbor12345 http://192.168.174.15 
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.174.15/v2/": dial tcp 192.168.174.15:443: connect: connection refused

(2) Soluções

在 Docker server 启动的时候,增加启动参数,默认使用 HTTP 访问。
vim /usr/lib/systemd/system/docker.service --13行--修改为
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.174.15 --containerd=/run/containerd/containerd.sock
2)ExecStart=/usr/bin/dockerd --insecure-registry 192.168.174.15
3)重新加载system并重启docker
systemctl daemon-reload
systemctl restart docker.service

(3) Imagem pull do armazém privado do cliente

docker login -u admin -p Harbor12345 http://192.168.174.15
#登录私有仓库,将自动保存凭据到/root/.docker/config.json,下次登录时可直接使用凭据登录 Harbor
docker pull 192.168.174.15/myproject-exo/centos:v1

insira a descrição da imagem aqui

(4) Imagem push do armazém privado do cliente

docker pull tomcat
#下载一个tomcat镜像
docker tag tomcat:latest 192.168.174.15/myproject-exo/tomcat:v2
#重新给tomcat进行打标签为私有仓库myproject-kgc项目中的镜像
docker push 192.168.174.15/myproject-exo/tomcat:v2 
#将重新打标签的镜像上传到私有仓库中

insira a descrição da imagem aqui

insira a descrição da imagem aqui

3. Manutenção do porto

1. criar

(1) Crie um usuário

insira a descrição da imagem aqui

(2) Adicionar membros do projeto

insira a descrição da imagem aqui

2. Usuários comuns operam armazéns privados

#客户端操作192.168.174.17客户端执行
docker logout
#退出之前的登录用户
docker login -u riky -p Harbor12345 http://192.168.174.15
#使用创建的用户登录私有仓库,若为公开库下载镜像时不需要登录
docker images
docker rmi 192.168.174.15/myproject-exo/centos:v1
#查看有哪些镜像,删除本地的v1镜像
docker pull 192.168.174.15/myproject-exo/centos:v1
#创建的用户从私有仓库pull下载v1镜像
docker tag 192.168.174.15/myproject-exo/centos:v1 192.168.174.15/myproject-exo/centos:v10
#重新打标签给v1
docker push 192.168.174.15/myproject-exo/centos:v10
#创建的用户上传镜像到私有仓库push

insira a descrição da imagem aqui

insira a descrição da imagem aqui

3. Registros de operação de visualização de log

insira a descrição da imagem aqui

4. Parâmetros obrigatórios e opcionais de Harbor.cfg

(1) Parâmetros obrigatórios
Parâmetros obrigatórios: Esses parâmetros precisam ser definidos no arquivo de configuração Harbor.cfg. Os parâmetros entrarão em vigor se o usuário os atualizar e executar o script install.sh para reinstalar o Harbor. Os parâmetros específicos são os seguintes:

  • hostname: usado para acessar a interface do usuário e registrar serviços. Deve ser o endereço IP da máquina de destino ou um nome de domínio totalmente qualificado (FQDN), como 192.168.174.15 ou hub.exo.cn. Não use localhost ou 127.0.0.1 como nome do host
  • ui_url_protocol: (http ou https, http padrão) o protocolo usado para acessar a UI e os serviços de token/notificação. Se o reconhecimento de firma estiver habilitado, este parâmetro deverá ser https
  • max_job_workers: threads de trabalho de cópia espelhada.
  • db_password: senha do usuário root do banco de dados MySQL para db_auth.
  • customize_crt: Este atributo pode ser ativado ou desativado e está ativado por padrão. Quando esta propriedade está ativada, o script de preparação cria uma chave privada e um certificado raiz, que são usados ​​para gerar/verificar tokens de registro. Desative essa propriedade quando a chave e o certificado raiz forem fornecidos por uma origem externa.
  • ssl_cert: caminho para o certificado SSL, aplicado somente quando o protocolo está definido como https.
  • secretkey_path: O caminho da chave secreta usado para criptografar ou descriptografar a senha do registro remoto na política de replicação.

(2) Parâmetros Opcionais
Parâmetros Opcionais: Esses parâmetros são opcionais para atualização, ou seja, os usuários podem deixá-los como valores padrão e atualizá-los na Web UI após iniciar o Harbour. Se você inserir Harbor.cfg, ele só terá efeito quando o Harbour for iniciado pela primeira vez e o Harbor.cfg será ignorado nas atualizações subsequentes desses parâmetros.

Observação: se você optar por definir esses parâmetros por meio da interface do usuário, faça isso imediatamente após iniciar o Harbour. Especificamente, o auth_mode desejado deve ser definido antes de registrar ou criar novos usuários no Harbor. Quando há usuários no sistema (exceto o usuário administrador padrão), auth_mode não pode ser alterado. Os parâmetros específicos são os seguintes:

  • E-mail: Harbour requer este parâmetro para enviar e-mails de "redefinição de senha" aos usuários e só deve ser habilitado se esta funcionalidade for necessária. Observe que as conexões SSL não estão habilitadas por padrão. Se o servidor SMTP exigir SSL, mas não suportar STARTTLS, o SSL deverá ser ativado configurando email_ssl=TRUE.
  • harbour_admin_password: A senha inicial do administrador, que só entra em vigor quando o Harbour é iniciado pela primeira vez. Posteriormente, esta configuração será ignorada e a senha do administrador deverá ser definida na UI. Observe que o nome de usuário/senha padrão é admin/Harbor12345.
  • auth_mode: O tipo de autenticação utilizada, por padrão é db_auth, ou seja, as credenciais são armazenadas no banco de dados. Para autenticação LDAP, defina como ldap_auth.
  • self_registration: ativa/desativa a função de registro de usuário. Quando desabilitado, novos usuários só podem ser criados por usuários administradores, e somente usuários administradores podem criar novos usuários no Harbor. NOTA: Quando auth_mode é definido como ldap_auth, o autorregistro é sempre desabilitado e esse sinalizador é ignorado.
  • Token_expiration: O tempo de expiração (em minutos) do token criado pelo serviço de token, o padrão é 30 minutos.
  • project_creation_restriction: sinalizador para controlar quais usuários têm permissão para criar projetos. Por padrão, todos podem criar um projeto. Se o valor for definido como "adminonly", somente administradores poderão criar projetos.
  • verify_remote_cert: ativado ou desativado, o padrão é ativado. Este sinalizador determina se os certificados SSL/TLS devem ser verificados quando o Harbour se comunica com instâncias de registro remoto. Desativar essa propriedade ignorará a verificação SSL/TLS, que geralmente é usada quando a instância remota tem um certificado autoassinado ou não confiável.

ken_expiration: O tempo de expiração (em minutos) do token criado pelo serviço de token, o padrão é 30 minutos.

  • project_creation_restriction: sinalizador para controlar quais usuários têm permissão para criar projetos. Por padrão, todos podem criar um projeto. Se o valor for definido como "adminonly", somente administradores poderão criar projetos.
  • verify_remote_cert: ativado ou desativado, o padrão é ativado. Este sinalizador determina se os certificados SSL/TLS devem ser verificados quando o Harbour se comunica com instâncias de registro remoto. Desativar essa propriedade ignorará a verificação SSL/TLS, que geralmente é usada quando a instância remota tem um certificado autoassinado ou não confiável.

Acho que você gosta

Origin blog.csdn.net/Riky12/article/details/132498119
Recomendado
Clasificación