257 字
1 分钟
Harbor 私有镜像仓库安装指南
2026-02-06

Harbor 是一个开源镜像仓库,通过策略和基于角色的访问控制保护镜像,是 CNCF 毕业项目。内网搭建 Harbor 可避免依赖第三方镜像仓库,对无网环境尤为友好。

客户端配置证书信任参见 Docker 配置私服自签名证书信任

下载安装包#

Harbor Releases:Harbor - Github

建议选择 offline 离线包,安装时自动解压内置的 Docker 镜像,无需在线拉取。

生成自签名 SSL 证书#

sudo apt update && sudo apt install -y openssl
vim harbor_cert.cnf
harbor_cert.cnf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = MyOrg
OU = DevOps
CN = harbor.example.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment, digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = harbor.example.com
DNS.2 = *.example.com
IP.1 = 192.168.2.11
# 生成私钥 + 自签名证书(有效期 10 年)
openssl req -x509 \
-newkey rsa:4096 \
-sha256 \
-days 3650 \
-nodes \
-keyout harbor.key \
-out harbor.crt \
-config harbor_cert.cnf \
-extensions v3_req
# Docker 客户端信任证书
sudo mkdir -p /etc/docker/certs.d/harbor.example.com/
sudo cp harbor.crt /etc/docker/certs.d/harbor.example.com/ca.crt

配置 harbor.yml#

cp harbor.yml.tmpl harbor.yml
vim harbor.yml

关键配置项:

配置项说明
hostnameHarbor 访问域名或 IP
http.portHTTP 端口
https.portHTTPS 端口
https.certificateCRT 证书路径
https.private_keyKEY 私钥路径
harbor_admin_passwordadmin 初始密码(默认 Harbor12345)
data_volume数据持久化目录(建议配置到大容量盘)

安装#

./install.sh

修改配置后重新加载:

./prepare
docker-compose down
docker-compose up -d

使用#

内网访问需配置 hosts:

192.168.2.21 harbor.local
# 登录
docker login harbor.example.com
# 打标签
docker tag myapp:latest harbor.example.com/myproject/myapp:v1.0.0
# 推送
docker push harbor.example.com/myproject/myapp:v1.0.0
# 拉取
docker pull harbor.example.com/myproject/myapp:v1.0.0

Nginx 反向代理(使用非 80/443 端口时)#

upstream harbor_backend {
server 127.0.0.1:5443;
keepalive 32;
}
server {
listen 443 ssl http2;
server_name harbor.local;
ssl_certificate /opt/harbor/crt/harbor.crt;
ssl_certificate_key /opt/harbor/crt/harbor.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
client_max_body_size 0;
location / {
proxy_pass https://harbor_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_connect_timeout 90s;
proxy_send_timeout 90s;
proxy_read_timeout 90s;
}
}
server {
listen 80;
server_name harbor.local;
return 301 https://$host$request_uri;
}

使用 HTTP(不推荐生产环境)#

在 Docker 的 daemon.json 中添加:

{
"insecure-registries": ["harbor.example.com"]
}
systemctl restart docker
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Harbor 私有镜像仓库安装指南
https://blog.olinl.com/posts/harbor-install/
作者
顾拾柒
发布于
2026-02-06
许可协议
CC BY-NC-SA 4.0

目录