harbor私有镜像仓库
一、harbor私有镜像仓库
1. harbor概述
harbor是采用go语言开发的私有镜像仓库服务;
Harbor 是一个开源的、企业级的容器镜像仓库,用于安全地存储、分发和管理云原生环境中的制品(Artifacts)。它最初由 VMware 公司中国研发团队于 2014 年启动,2016 年开源,并于 2020 年成为云原生计算基金会(CNCF)的毕业项目,标志着其成熟度和广泛的市场认可。
Harbor 的核心价值在于,它在标准的 Docker Registry 基础上,扩展了企业级用户必需的一系列高级功能,解决了企业在使用公共或基础镜像仓库时遇到的安全、权限和合规性等痛点。
核心功能
Harbor 提供了一系列企业级特性,使其成为生产环境的理想选择:
安全与合规:
- **基于角色的访问控制 (RBAC)**:支持精细的权限管理,确保不同团队或项目只能访问其被授权的镜像资源。
- 漏洞扫描:集成 Trivy 或 Clair 等扫描器,在上传镜像时或按策略自动进行安全漏洞扫描。
- 镜像签名与验证:通过内容信任机制(如 Notary)对镜像进行数字签名,确保镜像的来源可信和内容完整性。
- 审计日志:记录所有对镜像和仓库的操作,便于安全审计和故障排查。
管理与运维:
- 多租户支持:通过“项目(Project)”进行隔离,允许多个团队或部门在同一 Harbor 实例中安全地共享和管理镜像。
- **图形化管理界面 (UI)**:提供直观的 Web 界面,方便用户进行镜像的上传、下载、搜索和管理,降低了使用门槛。
- 镜像复制:支持在多个 Harbor 实例或不同地域的仓库之间同步和复制镜像,用于灾难恢复和内容分发。
- 垃圾回收:自动清理未被引用的镜像层,释放存储空间。
技术架构
Harbor 采用微服务架构设计,其核心组件各司其职:
- Harbor Core:核心服务,提供主要的 REST API,处理身份验证、授权、项目管理等核心业务逻辑。
- Harbor Portal:为用户提供的图形化 Web 界面。
- Harbor Registry:负责镜像的实际存储和检索,基于 Docker Distribution 项目实现。
- Harbor Job Service:管理后台异步任务,如镜像复制、漏洞扫描和垃圾回收等。
- **Database (PostgreSQL)**:存储用户、项目、策略等所有元数据信息。
- Redis:用作缓存和消息代理,提升系统性能。
- 存储后端:镜像层数据可以存储在本地文件系统,也支持 S3、Azure、GCS 等云存储服务。
总而言之,Harbor 不仅仅是一个镜像存储服务器,更是一个全面的云原生制品管理平台。它通过集成安全、管理和合规性功能,为企业在 Kubernetes 和 Docker 等环境中运行关键业务应用提供了可靠的基础设施。
2. 安装部署
在Vmware中实现本次安装,镜像是Ubuntu22.04 LTS,安装后优化教程在此网站搜索栏搜索优化,下载安装包需要科学上网。
准备harbor主机
| 主机名 | ip地址 |
|---|---|
| harbor01 | 10.0.0.131 |
准备环境
注意:要想安装harbor服务必须主机满足两个条件:
- 必须安装了docker环境;
- 必须安装了docker-compose环境
1. 安装部署docker
#1,下载docker安装包
[root@harbor01 ~]# cd /opt/
[root@harbor01 opt]# wget https://download.docker.com/linux/static/stable/x86_64/docker-29.6.2.tgz
#2. 查看
[root@harbor01 opt]# ls -l
total 85268
-rw-r--r-- 1 root root 87312398 Jul 21 00:59 docker-29.6.2.tgz
#3. 解压软件包
[root@harbor01 opt]# tar xf docker-29.6.2.tgz
#4. 授权docker执行文件
[root@harbor01 opt]# chown root.root docker/*
#5. 将命令文件移动到PATH路径
[root@harbor01 opt]# cp docker/* /usr/bin/
#6. 配置linux的内核转发
[root@harbor01 opt]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@harbor01 opt]# sysctl -p
net.ipv4.ip_forward = 1
#7. 编辑systemctl启动文件
[root@harbor01 opt]# vim /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
#启动docker时,需要什么程序已经准备好???(没启动成功页没关系)
After=network-online.target containerd.service
#如果这个程序没准备好,依旧可以启动docker
Wants=network-online.target
[Service]
Type=notify #systemd配置,表示,docker进程启动好running/active之后再进行下一步操作;
#服务启动时执行的命令
ExecStart=/usr/bin/dockerd
# 重启进程,$MAINPID表示docker的pid变量(systemd生成的)
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0 #docker停止时等待时间,0表示伊吾县等待其优雅停止,避免强制杀死
LimitNOFILE=infinity #不限制文件打开数
LimitNPROC=infinity #不限制系统进程打开数
[Install]
WantedBy=multi-user.target
# 启动docker
[root@harbor01 opt]# systemctl daemon-reload
[root@harbor01 opt]# systemctl enable --now docker.service
[root@harbor01 opt]# docker -v
Docker version 29.6.2, build dfc4efb
2. 安装部署docker-compose
#1. 下载docker-compose文件
[root@harbor01 opt]# wget https://github.com/docker/compose/releases/download/v5.3.1/docker-compose-linux-x86_64
#2. 将文件改名
[root@harbor01 opt]# mv docker-compose-linux-x86_64 docker-compose
#3. 给docker-compose文件执行权限
[root@harbor01 opt]# chmod +x docker-compose
#4. 将docker-compose文件移动到PATH目录
[root@harbor01 opt]# cp docker-compose /usr/local/bin/
#5. 查看版本
[root@harbor01 opt]# docker-compose version
Docker Compose version v5.3.1
官网下载harbor安装包
注意:需要科学上网哦
https://github.com/goharbor/harbor/releases
注意:选择最新的稳定版即可

# 选择离线安装版本
- 下滑选择【harbor-offine-installer-v2.13.2.tgz】

# 右键复制链接地址
# wget下载harbor软件包或者浏览器下载后拉到虚拟机中
[root@harbor01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.15.2/harbor-offline-installer-v2.15.2.tgz
# 查看软件包
[root@harbor01 opt]# ls -l
...
-rw-r--r-- 1 root root 730279437 Jul 27 09:47 harbor-offline-installer-v2.15.2.tgz
解压harbor安装包
1. 解压harbor到安装目录
[root@harbor01 opt]# tar xf harbor-offline-installer-v2.15.2.tgz -C /etc/
[root@harbor01 opt]# ls -l /etc/harbor/
total 718264
-rw-r--r-- 1 root root 3646 Jul 1 15:38 common.sh
-rw-r--r-- 1 root root 735455741 Jul 1 15:38 harbor.v2.15.2.tar.gz
-rw-r--r-- 1 root root 14657 Jul 1 15:38 harbor.yml.tmpl
-rwxr-xr-x 1 root root 1975 Jul 1 15:38 install.sh
-rw-r--r-- 1 root root 11347 Jul 1 15:38 LICENSE
-rwxr-xr-x 1 root root 2211 Jul 1 15:38 prepare
2. 修改配置文件
复制一份临时harbor配置文件,将后缀tmpl去掉
[root@harbor01 opt]# cp /etc/harbor/harbor.yml.tmpl /etc/harbor/harbor.yml
开始编辑harbor的配置文件
[root@harbor01 opt]# vim /etc/harbor/harbor.yml
# 定义 Harbor 服务的外部访问地址。客户端(如 Docker、Helm)将使用这个地址来访问 Harbor。
# 必须设置为 IP 或域名,并且不能是 `localhost` 或 `127.0.0.1`。
hostname: reg01.msp.com
# HTTP 协议配置
http:
# Harbor 服务监听 HTTP 请求的端口。默认为 80。
port: 80
# HTTPS 协议配置。如果配置了 HTTPS,HTTP 端口将自动重定向到 HTTPS 端口。
https:
# Harbor 服务监听 HTTPS 请求的端口。默认为 443。
port: 443
# SSL 证书公钥。
certificate: /etc/harbor/certs/harbor_ca.crt
# SSL 证书私钥。
private_key: /etc/harbor/certs/harbor.key
# Harbor 系统管理员admin的初始密码。
harbor_admin_password: 123456
# 数据库配置。Harbor 使用 PostgreSQL 数据库来存储元数据(项目、用户、镜像列表等,不是镜像文件本身)。
database:
# 用于连接 PostgreSQL 数据库的密码。
password: root123
# 连接池中保持的最大空闲连接数。有助于提升性能,避免频繁建立新连接。
max_idle_conns: 100
# 数据库打开的最大连接数。根据服务器硬件和负载调整。
max_open_conns: 900
# 一个连接可被重用的最长时间。超过此时间后,连接将在被放回池中时关闭。
conn_max_lifetime: 5m
# 一个连接在空闲状态下的最长存活时间。0 表示没有限制。
conn_max_idle_time: 0
# Harbor 用于存储数据的目录。
# 包括镜像文件、图表(Chart)文件以及数据库数据(如果使用内部数据库)。
data_volume: /harbor/data
# Trivy 配置。Trivy 是 Harbor 集成的漏洞扫描器。
trivy:
# 是否忽略未提供修复方案的漏洞。`false` 表示不忽略,会报告所有漏洞。
ignore_unfixed: false
# 在启动时是否跳过更新 Trivy 的漏洞数据库。`false` 表示自动更新,建议生产环境保持更新。
skip_update: false
# (特定于Java) 是否跳过更新 Java 索引数据库。`false` 表示更新。
skip_java_db_update: false
# 是否启用离线扫描模式。如果为 `true`,则仅使用本地数据库,不尝试从网络获取更新。
offline_scan: false
# 扫描的安全检查类型。`vuln` 表示漏洞扫描。
security_check: vuln
# 是否允许 Trivy 使用不安全的连接(如自签名证书)下载漏洞数据库。
insecure: false
# 扫描超时时间。如果一次扫描超过此时间,将被终止。
timeout: 5m0s
# Jobservice 配置。Jobservice 是 Harbor 中处理异步任务(如镜像复制、扫描等)的组件。
jobservice:
# 最大并发工作线程数。决定了可以同时执行的任务数量。
max_job_workers: 10
# 一个任务的最长运行时间(小时)。超过此时间的任务将被标记为失败。
max_job_duration_hours: 24
# 任务日志的输出方式。
# STD_OUTPUT: 输出到标准输出(通常会被 Docker 日志捕获)
# FILE: 输出到文件(在 `data_volume` 指定的目录下)
job_loggers:
- STD_OUTPUT
- FILE
# 日志清理器运行的频率(天)。每隔 `1` 天,它会清理过期的任务日志文件。
logger_sweeper_duration: 1 #days
# Webhook 通知配置。当发生推送镜像、删除镜像等事件时,Harbor 可以向外部系统发送通知。
notification:
# 发送 webhook 通知失败后的最大重试次数。
webhook_job_max_retry: 3
# 发送 webhook 通知请求时的 HTTP 客户端超时时间(秒)。
webhook_job_http_client_timeout: 3 #seconds
# 日志配置。
log:
# 全局日志级别。可选值:debug, info, warning, error, fatal。
level: info
# 本地文件日志配置。
local:
# 保留的日志文件轮转数量。例如 50,表示最多保留 50 个旧的日志文件。
rotate_count: 50
# 每个日志文件的最大大小。超过此大小会触发轮转。200M 表示 200MB。
rotate_size: 200M
# Harbor 组件日志文件的存储位置。
location: /var/log/harbor
# Harbor 的配置版本。此字段由 Harbor 自身维护,通常不需要手动修改。
_version: 2.15.2
# 代理服务器配置。如果 Harbor 所在服务器需要通过代理才能访问外部网络(如下载 Trivy 数据库),则需要在此配置。
proxy:
# HTTP 代理服务器的地址。
http_proxy:
# HTTPS 代理服务器的地址。
https_proxy:
# 不需要通过代理访问的地址列表,用逗号分隔。
no_proxy:
# 哪些 Harbor 组件需要使用代理。这里配置了 core, jobservice, trivy。
components:
- core
- jobservice
- trivy
# 上传缓存清理策略。
# 当客户端上传文件(如镜像层)失败或中断时,会留下临时文件。此功能用于自动清理这些文件。
upload_purging:
# 是否启用自动清理。`true` 为启用。
enabled: true
# 清理多久之前的临时文件。`168h` 表示 168 小时(7 天)前的文件将被清理。
age: 168h
# 清理作业的运行间隔。`24h` 表示每 24 小时运行一次清理任务。
interval: 24h
# 是否仅模拟运行(dry run)。`true` 时只会打印要清理的文件列表而不会实际删除,用于测试。`false` 会实际执行删除。
dryrun: false
# 缓存配置(通常指项目的元数据缓存,用于加速 UI 显示)。
cache:
# 是否启用缓存。`false` 表示不启用。
enabled: false
# 缓存数据的过期时间(小时)。`24` 表示 24 小时后缓存失效。
expire_hours: 24
生成SSL证书
1. 创建证书目录
[root@harbor01 opt]# mkdir -p /etc/harbor/certs
[root@harbor01 opt]# cd /etc/harbor/certs
2. 生成CA根证书
# 生成CA私钥
[root@harbor01 certs]# openssl genrsa -out ca.key 2048
# 生成CA公钥
[root@harbor01 certs]# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=MyRootCA"
3. 生成harbor证书
# 生成harbor服务私钥
[root@harbor01 certs]# openssl genrsa -out harbor.key 2048
# 生成证书请求文件CSR
[root@harbor01 certs]# openssl req -new -key harbor.key -out harbor.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=reg01.msp.com"
# 生成harbor服务公钥,后面要搭建harbor仓库高可用这里就生成一份证书都能用
[root@harbor01 certs]# openssl x509 -req -in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-out harbor.crt -days 3650 -sha256 \
-extensions san -extfile <(printf "[san]\nsubjectAltName=DNS:reg01.msp.com,DNS:reg02.msp.com,DNS:harbor01,DNS:harbor02,DNS:localhost,IP:127.0.0.1,IP:10.0.0.131,IP:10.0.0.132")
4. ca公钥与harbor服务公钥合并(选做)
# 将服务器证书和CA证书合并为一个链文件
[root@harbor01 certs]# cat harbor.crt ca.crt > harbor_ca.crt
5. 查看生成的证书
[root@harbor01 certs]# ls -l
total 24
-rw-r--r-- 1 root root 1334 Jul 27 20:28 ca.crt
-rw------- 1 root root 1704 Jul 27 20:28 ca.key
-rw-r--r-- 1 root root 2774 Jul 27 20:33 harbor_ca.crt
-rw-r--r-- 1 root root 1440 Jul 27 20:33 harbor.crt
-rw-r--r-- 1 root root 1009 Jul 27 20:33 harbor.csr
-rw------- 1 root root 1704 Jul 27 20:28 harbor.key
开始安装
# 回到安装目录
[root@harbor01 certs]# cd /etc/harbor/
# 查看目录下文件
[root@harbor01 harbor]# ls -l
total 718276
drwxr-xr-x 2 root root 4096 Jul 27 20:33 certs
-rw-r--r-- 1 root root 3646 Jul 1 15:38 common.sh
-rw-r--r-- 1 root root 735455741 Jul 1 15:38 harbor.v2.15.2.tar.gz
-rw-r--r-- 1 root root 5513 Jul 27 20:27 harbor.yml
-rw-r--r-- 1 root root 14657 Jul 1 15:38 harbor.yml.tmpl
-rwxr-xr-x 1 root root 1975 Jul 1 15:38 install.sh
-rw-r--r-- 1 root root 11347 Jul 1 15:38 LICENSE
-rwxr-xr-x 1 root root 2211 Jul 1 15:38 prepare
# 执行安装脚本
[root@harbor01 harbor]# ./install.sh
浏览器访问
10.0.0.131

用户:admin
密码:123456

3. docker主机链接harbor仓库
harbor创建项目
# 点击导航栏【项目】
- 点击【新建项目】
- 编辑【项目名称】
- 勾选访问级别【公开】
- 确定

# 创建完成后,查看项目;

docker主机添加harbor私有仓库
1. docker主机做harbor的hosts解析
[root@docker01 ~]$ vim /etc/hosts
......
10.0.0.131 reg01.msp.com
# 测试解析
[root@docker01 ~]# ping -c3 reg01.msp.com
PING reg01.msp.com (10.0.0.131) 56(84) bytes of data.
64 bytes from reg01.msp.com (10.0.0.131): icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from reg01.msp.com (10.0.0.131): icmp_seq=2 ttl=64 time=1.02 ms
64 bytes from reg01.msp.com (10.0.0.131): icmp_seq=3 ttl=64 time=0.425 ms
--- reg01.msp.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.425/0.862/1.143/0.313 ms
2. docker添加harbor仓库
| daemin.json | 解释说明 |
|---|---|
| "registry-mirrors" : ["https://reg01.oldboy.com"] | 【安全的仓库】表示有TLS加密的访问仓库 |
| "insecure-registries" : ["http://10.0.0.131"] | 【不安全的仓库】表示没有TLS加密的访问仓库 |
[root@docker01 ~]$ vim /etc/docker/daemon.json
{
"registry-mirrors" : ["https://reg01.msp.com"]
}
docker主机创建ca证书目录
[root@docker01 ~]$ mkdir -p /etc/docker/certs.d/reg01.msp.com/
harbor将ca公钥传给docker主机证书验证目录
[root@harbor01 harbor]# scp /etc/harbor/certs/ca.crt 10.0.0.121:/etc/docker/certs.d/reg01.msp.com/
重启docker
[root@docker01:~]$ systemctl restart docker.service
docker主机登录harbor
[root@docker01 ~]# docker login -uadmin -p123456 https://reg01.msp.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
Login Succeeded
4. 推送本地镜像到仓库
· 给本地镜像打标签
1. 查看本地镜像
[root@docker01 ~]# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest 28bd5fe8b56d 13MB 3.93MB
nginx:stable 5cf90903deda 240MB 66MB
2. 修改本地镜像的标签名
修改规则:[harbor仓库访问域名]/[项目名称]/[镜像名称]:[镜像tag]
# 修改本地镜像标签;
[root@docker01 ~]$ docker tag alpine:latest reg01.msp.com/docker_project/alpine:latest
[root@docker01 ~]$ docker tag nginx:stable reg01.msp.com/docker_project/nginx:stable
# 再次查看本地镜像列表
[root@docker01 ~]# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest 28bd5fe8b56d 13MB 3.93MB
nginx:stable 5cf90903deda 240MB 66MB
reg01.msp.com/docker_project/alpine:latest 28bd5fe8b56d 13MB 3.93MB
reg01.msp.com/docker_project/nginx:stable 5cf90903deda 240MB 66MB
· 推送本地镜像
[root@docker01 ~]# docker push reg01.msp.com/docker_project/alpine:latest
[root@docker01 ~]# docker push reg01.msp.com/docker_project/nginx:stable

harbor页面查看
1. 查看项目列表变化
# 查看项目中的镜像数量
2. 查看项目中的镜像
# 点击进入【项目】中

5. 拉取镜像从镜像仓库
删除所有镜像
[root@docker01 ~]$ docker image rm -f `docker images -aq`
[root@docker01 ~]# docker images -a
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
拉取镜像
[root@docker01 ~]$ docker pull reg01.msp.com/docker_project/nginx:stable
# 拉取后再次查看镜像列表
[root@docker01 ~]# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
reg01.msp.com/docker_project/nginx:stable f0dab47df05c 238MB 63.1MB
6. harbor的高可用配置
准备2个harbor主机环境
| 主机名 | ip地址 | 描述 |
|---|---|---|
| harbor01 | 10.0.0.131 | 已有环境,里面有项目,有镜像; |
| harbor02 | 10.0.0.132 | 新环境,什么都没有; |
两个harbor主机解析域名
[root@harbor01 ~]# vim /etc/hosts
......
10.0.0.131 reg01.msp.com
10.0.0.132 reg02.msp.com
[root@harbor02 ~]# vim /etc/hosts
......
10.0.0.131 reg01.msp.com
10.0.0.132 reg02.msp.com
复制harbor01配置到harbor02
# harbor01上操作
[root@harbor01 ~]# cd /opt/
[root@harbor01 opt]# ls -l
total 830248
drwx--x--x 4 root root 4096 Jul 27 20:05 containerd
drwxr-xr-x 2 1001 1001 4096 Jul 17 00:22 docker
-rw-r--r-- 1 root root 87312398 Jul 21 00:59 docker-29.6.2.tgz
-rwxr-xr-x 1 root root 32564869 Jul 24 11:53 docker-compose
-rw-r--r-- 1 root root 730279437 Jul 27 09:47 harbor-offline-installer-v2.15.2.tgz
[root@harbor01 opt]# scp -r ./* 10.0.0.132:/opt/
# harbor02上操作
[root@harbor02 ~]# scp 10.0.0.131:/lib/systemd/system/docker.service /lib/systemd/system/
[root@harbor02 opt]# systemctl daemon-reload
[root@harbor02 opt]# systemctl enable --now docker.service
[root@harbor02 opt]# docker -v
Docker version 29.6.2, build dfc4efb
[root@harbor02 opt]# cp docker-compose /usr/local/bin/
[root@harbor02 opt]# docker-compose version
Docker Compose version v5.3.1
[root@harbor02 opt]# scp -r 10.0.0.131:/etc/harbor /etc/
[root@harbor02 opt]# sed -i "s/reg01.msp.com/reg02.msp.com/g" /etc/harbor/harbor.yml
[root@harbor02 opt]# cd /etc/harbor/
[root@harbor02 harbor]# ./install.sh
# docker01上操作
[root@docker01 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors" : [
"https://reg01.msp.com",
"https://reg02.msp.com"]
}
[root@docker01 ~]# mkdir -p /etc/docker/certs.d/reg02.msp.com/
[root@docker01 ~]# scp 10.0.0.132:/etc/harbor/certs/ca.crt /etc/docker/certs.d/reg02.msp.com/
[root@docker01 ~]# systemctl restart docker.service
[root@docker01 ~]# docker login -uadmin -p123456 https://reg02.msp.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/
Login Succeeded
两个harbor主机证书互信
harbor01和harbor02分别创建信任证书目录
- harbor01创建:/etc/docker/certs.d/reg02.msp.com目录
- harbor02创建:/etc/docker/certs.d/reg01.msp.com目录
[root@harbor01 ~]# mkdir -p /etc/docker/certs.d/reg02.msp.com
[root@harbor02 ~]# mkdir -p /etc/docker/certs.d/reg01.msp.com
分发证书:
- harbor01将自己的ca证书发给harbor02
- harbor02将自己的ca证书发给harbor01
[root@harbor01 ~]# scp /etc/harbor/certs/ca.crt 10.0.0.132:/etc/docker/certs.d/reg01.msp.com/
[root@harbor02 ~]# scp /etc/harbor/certs/ca.crt 10.0.0.131:/etc/docker/certs.d/reg02.msp.com/
harbor设置推送规则
1. 添加仓库
# 仓库管理
- 新建仓库


2. 推送镜像到harbor02
# 复制管理
- 选择推送push
- 仓库备份名
- 设置定时任务:分时日月周

# 5分钟后查看新仓库项目 10.0.0.132 可以看到,推送成功;
7. harbor的容器组件
| 容器组件 | 功能作用 |
|---|---|
| harbor-core | 【核心API、UI、"认证"组件】:主要用于API调用、用户管理、系统配置、复制任务、链接其他仓库 等 |
| harbor-jobservice | 【执行后台任务】:复制镜像,漏洞扫描、垃圾回收等任务的详细执行日志; |
| harbor-portal | 【nginx服务】:用户访问UI的HTTP访问日志,通常错误会反向代理到 harbor-core |
| registry | 【pull、push分发镜像】:最底层的 docker push/pull 操作 |
| harbor-db | PostgreSQL 数据库 |
| redis | 缓存服务 |
| harbor-log | 【日志收集器】:收集其他容器的日志(如果配置了) |
# 如果是连接类错误,查看harbor-core的容器日志:
[root@harbor01 ~]# docker logs -f harbor-core
# 如果是页面访问问题,查看nginx的容器日志
[root@harbor01 ~]# docker logs -f nginx