Instalación y configuración del almacén espejo de nivel empresarial Harbor
Puerto
Descripción general del puerto
Harbour es un sistema de gestión de almacén de imágenes de contenedores de código abierto con ricas funciones de gestión y seguridad. Puede construir almacenes privados en entornos empresariales y proporcionar características como confiabilidad, soporte para múltiples inquilinos y personalización.
Página web oficial:https://goharbor.io/
GitHub:https://github.com/goharbor/harbor
Harbour tiene como objetivo proporcionar soluciones de gestión de imágenes a nivel empresarial con las siguientes características y funciones:
seguridad:
Harbor proporciona un amplio conjunto de funciones de seguridad, que incluyen autenticación y autorización de usuarios, verificación de firmas de imágenes, control de acceso, escaneo de vulnerabilidades, etc. Esto le ayuda a proteger sus imágenes de ataques y exploits maliciosos.
Credibilidad:
Harbor admite la firma digital y la verificación de imágenes para garantizar su integridad y origen confiable. Puede utilizar un certificado personalizado o de terceros para firmar y verificar la autenticidad de su imagen.
Soporte para múltiples inquilinos:
Harbor admite múltiples proyectos y múltiples almacenes, que pueden agruparse y administrarse según diferentes organizaciones, equipos o proyectos. Cada proyecto puede tener sus propios permisos de usuario y políticas de control de acceso.
Personalización:
Harbour ofrece opciones de configuración flexibles y mecanismos de expansión que se pueden personalizar según sus necesidades. Puede ajustar configuraciones como almacenamiento, redes y autenticación para adaptarse a diferentes entornos y necesidades.
alto rendimiento:
Harbor utiliza estrategias de replicación y almacenamiento en caché para mejorar la velocidad y la disponibilidad del acceso a las imágenes. Admite múltiples backends de almacenamiento espejo, incluido el almacenamiento local, el almacenamiento S3, etc.
Interfaz amigable:
Harbour proporciona una interfaz web intuitiva y fácil de usar que puede administrar fácilmente imágenes, proyectos, usuarios, permisos de acceso, etc.
Instalar puerto
Descargue el archivo binario de Harbor para la instalación.Referencia de instalación y configuración de Harbor:
https://goharbor.io/docs/2.9.0/install-config/
Descargar el paquete de instalación sin conexión
wget https://github.com/goharbor/harbor/releases/download/v2.7.3/harbor-offline-installer-v2.7.3.tgz
Descomprima el paquete de instalación
tar -zxvf harbor-offline-installer-v2.7.3.tgz
[root@master harbor]# ls
common.sh harbor.v2.7.3.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
Ingrese al directorio del puerto
cd harbor
Configurar puerto
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
# 当前节点主机名或IP
hostname: 112.74.96.150
# http端口配置
http:
port: 8080
# 这里不使用https,注释该配置
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
# Harbor UI的初始密码
harbor_admin_password: Harbor12345
# The default data volume
data_volume: /usr/local/program/harbor/data
Ejecute el script del instalador
Después de configurar Harbor.yml, puede utilizar el script install.sh para instalar e iniciar Harbor.
./install.sh
Si la instalación se realiza correctamente, se generará el siguiente registro:
[Step 5]: starting Harbor ...
[+] Running 10/10
✔ Network harbor_harbor Created 0.1s
✔ Container harbor-log Started 0.1s
✔ Container registryctl Started 0.2s
✔ Container harbor-db Started 0.1s
✔ Container redis Started 0.1s
✔ Container registry Started 0.1s
✔ Container harbor-portal Started 0.2s
✔ Container harbor-core Started 0.1s
✔ Container harbor-jobservice Started 0.1s
✔ Container nginx Started 0.1s
✔ ----Harbor has been installed and started successfully.----
Vea la imagen de la ventana acoplable y aparecerá una lista de imágenes relacionadas con Hardor.
[root@master harbor]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
62343618f630 goharbor/nginx-photon:v2.7.3 "nginx -g 'daemon of…" About a minute ago Up About a minute (healthy) 0.0.0.0:8080->8080/tcp nginx
a39ecd6eddf1 goharbor/harbor-jobservice:v2.7.3 "/harbor/entrypoint.…" About a minute ago Up About a minute (healthy) harbor-jobservice
f0c1a4957d04 goharbor/harbor-core:v2.7.3 "/harbor/entrypoint.…" About a minute ago Up About a minute (healthy) harbor-core
f64062148ccf goharbor/harbor-registryctl:v2.7.3 "/home/harbor/start.…" About a minute ago Up About a minute (healthy) registryctl
6fc3d92cc65f goharbor/harbor-db:v2.7.3 "/docker-entrypoint.…" About a minute ago Up About a minute (healthy) harbor-db
fc9917cad78e goharbor/harbor-portal:v2.7.3 "nginx -g 'daemon of…" About a minute ago Up About a minute (healthy) harbor-portal
8622fab2670f goharbor/registry-photon:v2.7.3 "/home/harbor/entryp…" About a minute ago Up About a minute (healthy) registry
27e3ba43f9f8 goharbor/redis-photon:v2.7.3 "redis-server /etc/r…" About a minute ago Up About a minute (healthy) redis
feef079dcbd4 goharbor/harbor-log:v2.7.3 "/bin/sh -c /usr/loc…" About a minute ago Up About a minute (healthy) 127.0.0.1:1514->10514/tcp harbor-log
Acceso
Acceso al navegador http://IP:8080
Utilice nombre de usuario: admin
, contraseña configurada: Harbor12345
para iniciar sesión
Iniciar y detener el puerto
Parada Puerto
[root@master harbor]# docker-compose stop
[+] Running 9/9
⠿ Container harbor-jobservice Stopped 0.0s
⠿ Container nginx Stopped 0.0s
⠿ Container registryctl Stopped 10.2s
⠿ Container harbor-portal Stopped 0.3s
⠿ Container harbor-core Stopped 0.0s
⠿ Container harbor-db Stopped 0.4s
⠿ Container registry Stopped 0.2s
⠿ Container redis Stopped 0.5s
⠿ Container harbor-log Stopped 10.2s
Puerto de inicio
[root@master harbor]# docker-compose start
[+] Running 9/9
⠿ Container harbor-log Started 0.3s
⠿ Container redis Started 0.9s
⠿ Container registryctl Started 0.7s
⠿ Container harbor-portal Started 1.0s
⠿ Container harbor-db Started 0.8s
⠿ Container registry Started 1.0s
⠿ Container harbor-core Started 0.3s
⠿ Container nginx Started 0.5s
⠿ Container harbor-jobservice Started
Iniciar sesión en el almacén del puerto
Para iniciar sesión en el repositorio privado de Harbor, ejecute el siguiente comando para iniciar sesión en el repositorio de Harbor:
docker login <Harbor仓库地址>
Excepción de inicio de sesión
[root@master harbor]# docker login 112.74.96.150:8080
Username: admin
Password:
Error response from daemon: Get "https://112.74.96.150:8080/v2/": http: server gave HTTP response to HTTPS client
razón:
De forma predeterminada, se comunica con el almacén de Harbor a través del protocolo HTTPS, pero el almacén de Harbor solo está configurado con el servicio HTTP y no habilita el servicio HTTPS.
solución
Opcion uno:
Busque el directorio donde se encuentra docker.service
[root@master harbor]# find / -name docker.service -type f
/usr/lib/systemd/system/docker.service
editar vim /usr/lib/systemd/system/docker.service
Modifique esta línea de configuración:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Utilice --insecure
la opción para omitir la verificación del certificado https, cámbiela a lo siguiente:
ExecStart=/usr/bin/dockerd --insecure-registry 112.74.96.150:8080 -H fd:// --containerd=/run/containerd/containerd.sock
Opción II:
Modifique
/etc/docker/daemon.json
el archivo, agregue configuración y especifique la dirección IP del almacén espejo
{
"insecure-registries": ["112.74.96.150"]
}
Acceso
Vuelva a cargar la configuración y reinicie la ventana acoplable
systemctl daemon-reload
systemctl restart docker
Ingresar de nuevo
Nota: Es posible que tengas que reiniciar Harbour
[root@master harbor]# docker login 112.74.96.150:8080
Username: admin
Password:
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
abandonar
Salga del estado de inicio de sesión del almacén privado Harbour
docker logout <Harbor仓库地址>
[root@master ~]# docker login 112.74.96.150:8080
Authenticating with existing credentials...
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
Empujar y tirar de la imagen del puerto
Convención de nomenclatura de imágenes
Existen ciertas convenciones de nomenclatura para los nombres de las imágenes de Harbour. La diferencia es que el nombre del proyecto debe usarse como parte del nombre de la imagen. Para obtener más detalles, consulte los siguientes ejemplos.
Construir imagen
docker build -t <Harbor仓库地址>/<项目名称>/<镜像名称>:<标签> .
Enviar la imagen al repositorio de Harbour
docker push <Harbor仓库地址>/<项目名称>/<镜像名称>:<标签>
Imagen de Pull Harbor
docker pull <Harbor仓库地址>/<项目名称>/<镜像名称>:<标签>
Crear proyecto
Cree un proyecto en la interfaz del repositorio de Harbor o utilizando la API de Harbor
Creación de interfaz
Creación de API Harbour
curl -X POST -u username:password -H "Content-Type: application/json" -d '{
"project_name": "projectname",
"public": 1,
"content_trust": "disabled"
}' https://<Harbor仓库地址>/api/projects
Empujar imagen
Sacar una imagen de prueba
[root@master ~]# docker pull testcontainers/helloworld
Ver esta imagen
[root@master ~]# docker images | grep hello
testcontainers/helloworld latest 6974669be52b 2 years ago 12.7MB
Marque la imagen local y colóquela en el almacén del puerto.
Nota: Se requiere un nivel más como nombre del proyecto.
[root@master harbor]# docker tag testcontainers/helloworld:latest 112.74.96.150:8080/projectname/helloworld:v1
Ver la imagen nuevamente
[root@master harbor]# docker images | grep hello
112.74.96.150:8080/projectname/helloworld v1 6974669be52b 2 years ago 12.7MB
testcontainers/helloworld latest 6974669be52b 2 years ago 12.7MB
Envíe la imagen local al almacén espejo (primero debe iniciar sesión en el almacén espejo)
[root@master harbor]# docker push 112.74.96.150:8080/projectname/helloworld:v1
The push refers to repository [112.74.96.150:8080/projectname/helloworld]
802cca11a560: Pushing [============================================> ] 6.194MB/7.019MB
80b7fe966245: Pushed
50644c29ef5a: Pushing [=============================================> ] 5.068MB/5.575MB
Inicie sesión en Harbour y verifique projectname
en el nuevo proyecto. Una imagen se ha enviado correctamente.
Extraer imagen
Eliminar imagen existente
[root@master harbor]# docker images | grep hello
112.74.96.150:8080/projectname/helloworld v1 6974669be52b 2 years ago 12.7MB
testcontainers/helloworld latest 6974669be52b 2 years ago 12.7MB
[root@master harbor]# docker rmi 112.74.96.150:8080/projectname/helloworld:v1
Untagged: 112.74.96.150:8080/projectname/helloworld:v1
Untagged: 112.74.96.150:8080/projectname/helloworld@sha256:4ee5a832ef6eee533df7224b80d4cceb9ab219599014f408d0b69690be94c396
[root@master harbor]# docker rmi testcontainers/helloworld:latest
Untagged: testcontainers/helloworld:latest
Untagged: testcontainers/helloworld@sha256:4ee5a832ef6eee533df7224b80d4cceb9ab219599014f408d0b69690be94c396
Saca la imagen de Harbour
[root@master harbor]# docker pull 112.74.96.150:8080/projectname/helloworld:v1
v1: Pulling from projectname/helloworld
df20fa9351a1: Downloading [==========> ] 614.1kB/2.798MB
7d694ce25b07: Download complete
99f5116afda5: Downloading [================================> ]
2.389MB/3.655MB
Ver la imagen extraída
[root@master harbor]# docker images | grep hell
112.74.96.150:8080/projectname/helloworld v1 6974669be52b 2 years ago 12.7MB