Docker --- Método de construcción y operación del puerto de almacén privado

Directorio de artículos

1. Introducción a Harbour

Aunque Docker proporciona oficialmente un repositorio espejo público, también es muy necesario implementar el Registro en nuestro entorno privado en términos de seguridad y eficiencia.

Harbour es un proyecto de administración de Docker Registry de nivel empresarial de código abierto de VMware. En comparación con Docker Official, tiene más derechos y un diseño de arquitectura completo. Es adecuado para la implementación de clústeres de Docker a gran escala para proporcionar servicios de almacén.

Proporciona principalmente la interfaz de usuario de la interfaz de administración de Dcoker Registry, que puede basarse en el control de acceso basado en roles, replicación espejo, integración AD / LDAP, auditoría de registros y otras funciones, y es totalmente compatible con chino.
Inserte la descripción de la imagen aquí

2. Principales funciones de Harbour

Control de acceso basado en roles Los
usuarios y los repositorios espejo de Docker se organizan y administran a través de "proyectos". Un usuario puede tener diferentes permisos para varios repositorios espejo en el mismo espacio de nombres (proyecto).

Estrategia de replicación basada en
espejo El espejo se puede replicar en múltiples instancias de registro (el espejo en el almacén se puede sincronizar con el puerto remoto, similar a la función de sincronización maestro-esclavo de MySQL), especialmente adecuado para balanceo de carga, alta disponibilidad, nube híbrida y nube múltiple Escenas.

Interfaz gráfica de usuario
Los usuarios pueden navegar a través del navegador, recuperar el almacén de réplicas de Docker actual, administrar proyectos y espacios de nombres.

Soporte AD / LDAP
Harbour puede integrar el AD / LDAP existente en la empresa para la gestión de la autenticación.

Eliminación de espejos y recolección de basura
Harbor admite la eliminación de espejos en la Web, la recuperación de espejos inútiles y la liberación de espacio en disco. La imagen se puede eliminar y el espacio que ocupa la imagen se puede recuperar.

Gestión de auditorías
Todas las operaciones en el almacén espejo se pueden registrar y rastrear para la gestión de auditorías.

RESTful API
RESTful API proporciona a los administradores más control sobre Harbour, lo que facilita la integración con otro software de gestión.

Implementación simple
Proporciona herramientas de instalación en línea y fuera de línea, y también se puede instalar en el dispositivo virtual de la plataforma vSphere (modo OVA).

Todos los componentes de Harbour se implementan en Docker, por lo que Harbour se puede implementar rápidamente con Docker Compose.
Nota: Dado que Harbour se basa en Docker Registry V2, la versión de Docker debe ser> = 1.10.0 docker-compose> = 1.6.0

Tres, componentes de la arquitectura Harbour

Diagrama de componentes de arquitectura:
Inserte la descripción de la imagen aquí

1. Proxy: herramienta de proxy inverso

2. Registro: responsable de almacenar imágenes de la ventana acoplable y procesar los comandos de carga / descarga. Para el control de acceso del usuario, apunta a un servicio de token, lo que obliga a los usuarios a llevar un token legal en cada solicitud de extracción / inserción de Docker, y el registro descifrará y verificará el token con la clave pública.

3. Servicio principal: la función principal de Harbour:

UI:
Webhook de interfaz gráfica: obtenga los cambios de estado de la imagen en el registro a tiempo, configure el webhook en el registro y pase los cambios de estado al módulo UI.
Servicio de tokens: complejo para emitir tokens a cada comando docker push / p / ull según los permisos del usuario. Si el cliente de Docker inicia una solicitud al servicio de registro, si no contiene un token, será redirigido aquí. Una vez obtenido el token, se volverá a realizar la solicitud al registro.

4. Base de datos: proporcione servicios de base de datos, almacene permisos de usuario, registros de auditoría, información de agrupación de imágenes de Docker y otros datos

5. Recolector de registros: para ayudar a monitorear el funcionamiento del puerto, es responsable de recolectar registros de otros componentes para análisis futuros.

Cuarto, despliegue del puerto

4.1. Preparación ambiental

Dos máquinas virtuales:

harbour (servidor de puerto, utilizado para construir un almacén privado)
192.168.100.3 docker-ce, docker-compose (debe estar instalado), Harbour

cliente (cliente, utilizado para acceso remoto al almacén privado) 192.168.100.4 docker-ce

4.2. Instalar componer y albergar

1. Descarga el software

cd /opt/dockersoft/

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local

2. Configure el archivo de parámetros de Harbour e inicie

vim /usr/local/harbor/harbor.cfg
[root @ pc-3 dockersoft] # tar zxvf harbour-offline-installer-v1.2.2.tgz -C / usr / local
Inserte la descripción de la imagen aquí

[root@pc-3 harbor]# systemctl start docker

Cd    /usr/local/harbor

Después de cambiar los parámetros, debe modificar este comando y no es necesario que ejecute este script para modificar los parámetros opcionales.

[root@pc-3 harbor]# sh install.sh

[Step 0]: checking installation environment ...

Note: docker version: 19.03.13

Note: docker-compose version: 1.21.1

[Step 1]: loading Harbor images ...
dd60b611baaa: Loading layer  133.2MB/133.2MB
........................................................
Creating nginx              ... done

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://192.168.100.3.
For more details, please visit https://github.com/vmware/harbor .

[root@pc-3 harbor]#

Acceda a 192.168.100.3

Inserte la descripción de la imagen aquí

El usuario de inicio de sesión, el nombre de usuario y la contraseña se definen en el archivo de configuración y se pueden ver

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Crear usuario zhangsan

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Agregar miembro zhangsan al proyecto sha

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Prueba de inicio de sesión de Zhang San

Inserte la descripción de la imagen aquí

4.3 Inicio de sesión en el servicio local Inicio de sesión en la ventana acoplable -u admin -p Harbor12345 http://127.0.0.1

[root@pc-3 harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@pc-3 harbor]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/sha/nginx         v1                  7e4d58f0e5f3        13 days ago         133MB

4.4 Carga de espejo local

[root@docker01 harbor]# docker tag nginx:latest 127.0.0.1/sha/nginx:v1
[root@docker01 harbor]# docker push 127.0.0.1/sha/nginx

[root@pc-3 harbor]# docker push 127.0.0.1/sha/nginx
The push refers to repository [127.0.0.1/sha/nginx]
908cf8238301: Pushed
eabfa4cd2d12: Pushed
60c688e8765e: Pushed
f431d0917d41: Pushed
07cab4339852: Pushed
v1: digest: sha256:794275d96b4ab96eeb954728a7bf11156570e8372ecd5ed0cbc7280313a27d19 size: 1362

Inserte la descripción de la imagen aquí

4.5 Inicio de sesión de cliente remoto, intente cargar el espejo

[root@pc-4 dockersoft]# docker login -u admin -p Harbor12345 http://192.168.100.3
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.100.3/v2/: dial tcp 192.168.100.3:443: connect: connection refused
[root@pc-4 dockersoft]#

Se informará el error 443, esto se debe a que el puerto se basa en http 80 en lugar de la
solución httpds :

Inserte la descripción de la imagen aquí

14 ExecStart=/usr/bin/dockerd -H fd://  --insecure-registry 192.168.100.3 -containerd=/run/container    d/containerd.sock
[root@pc-4 dockersoft]# docker login -u admin -p Harbor12345 http://192.168.100.3
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@pc-4 dockersoft]#

4.6 Centos espejo de carga remota: 7

[root@pc-4 dockersoft]# docker pull centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
[root@pc-4 dockersoft]#  docker tag centos:7 192.168.100.3/sha/centos7:v1
[root@pc-4 dockersoft]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
192.168.100.3/sha/centos7   v1                  7e6257c9f8d8        6 weeks ago         203MB
centos                      7                   7e6257c9f8d8        6 weeks ago         203MB
[root@pc-4 dockersoft]# docker push 192.168.100.200/accp/centos7
The push refers to repository [192.168.100.200/accp/centos7]
An image does not exist locally with the tag: 192.168.100.200/accp/centos7
[root@pc-4 dockersoft]# docker push 192.168.100.3/sha/centos7
The push refers to repository [192.168.100.3/sha/centos7]
613be09ab3c0: Pushed
v1: digest: sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9 size: 529
[root@pc-4 dockersoft]#

Inserte la descripción de la imagen aquí

4.7 Descargar operación de espejo

Inserte la descripción de la imagen aquí

[root@pc-4 dockersoft]# docker pull 192.168.100.3/sha/nginx:v1
v1: Pulling from sha/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:794275d96b4ab96eeb954728a7bf11156570e8372ecd5ed0cbc7280313a27d19
Status: Downloaded newer image for 192.168.100.3/sha/nginx:v1
192.168.100.3/sha/nginx:v1

4.8. Resumen de errores

//报错:
docker-compose up -d
Creating network "harbor_harbor" with the default driver
ERROR:Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed:jptables
--wait-t nat-I DOCKER -i br-25094fc09b3c -j RETURN:jptables: No chain/target/match by that
name.
(exit status 1))
//解决:关闭防火墙后,docker需要重启
systemctl restart docker 
docker-compose up -daemon

8.Harbor 容器的关闭与启动
docker-compose up -d	"所有容器启动"
docker-compose down -v	"所有Harbor容器停止,但保留数据镜像"

[root@docker01 ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1/accp/nginx        v1                  7e4d58f0e5f3        13 days ago         133MB
nginx                       latest              7e4d58f0e5f3        13 days ago         133MB
127.0.0.1/accp/centos7      v1                  7e6257c9f8d8        6 weeks ago         203MB
vmware/harbor-log           v1.2.2              36ef78ae27df        2 years ago         200MB
vmware/harbor-jobservice    v1.2.2              e2af366cba44        2 years ago         164MB
vmware/harbor-ui            v1.2.2              39efb472c253        2 years ago         178MB
vmware/harbor-adminserver   v1.2.2              c75963ec543f        2 years ago         142MB
vmware/harbor-db            v1.2.2              ee7b9fa37c5d        2 years ago         329MB
vmware/nginx-photon         1.11.13             6cc5c831fc7f        2 years ago         144MB
vmware/registry             2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/postgresql           9.6.4-photon        c562762cbd12        3 years ago         225MB
vmware/clair                v2.0.1-photon       f04966b4af6c        3 years ago         297MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 years ago         324MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 years ago         156MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        3 years ago         157MB
photon                      1.0                 e6e4e4a2ba1b        4 years ago         128MB

Supongo que te gusta

Origin blog.csdn.net/BIGmustang/article/details/108769446
Recomendado
Clasificación