搭建Docker私有仓库Harbor

本文详细介绍Harbor企业级Docker Registry的安装流程,包括基础依赖安装、HTTPS配置、harbor.yml配置及客户端访问方法,适合希望搭建私有Docker镜像仓库的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



一. 关于Harbor

  • Harbor 是由VMware 公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、镜像复制等功能。

二. 安装Harbor

Harbor提供了离线安装(推荐)和在线安装两种方式,具体安装过程可参考官方安装向导

1. 安装基础依赖

  • Harbor的安装需要DockerDocker-compose的支持,安装教程看这里

2.下载安装Harbor

# 安装路径为 /usr/local/
$ wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz
$ tar -zxvf harbor-offline-installer-v1.9.1.tgz -C /usr/local/
$ cd /usr/local/harbor && ls
# harbor.yml install.sh LICENSE prepare        #包含的文件

3.设置HTTPS

  • Harbor推荐使用HTTPS方式访问, 官方也给出了详尽的Http配置向导

第一步:设定仓库的主机名(或主机IP)

# 生成相关目录
$ mkdir -p /data/cert
$ mkdir -p /data/harbor 
$ mkdir -p /etc/docker/certs.d/reg.xxx.com/

#主机或IP,用于建立CA证书发行站点
$ HARBOR_HOST=reg.xxx.com      

第二步:证书颁发机构信息(特别注意Common Name项)

$ mkdir ./ssl && cd ssl

# 方式一:推荐
$ openssl genrsa -out ca.key 4096
$ openssl req -x509 -new -nodes -sha512 -days 3650 \
  -subj "/C=CN/ST=BJ/L=BJ/O=xxx/OU=JSB/CN=${HARBOR_HOST}" \
  -key ca.key \
  -out ca.crt

# 方式二:跟方式一相同,只是有分步骤的证书内容填写过程
$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
# ******************************证书生成过程演示************************
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xxx
Organizational Unit Name (eg, section) []:JSB
Common Name (eg, your name or your server's hostname) []:reg.xxx.com
Email Address []:reg@xxx.com
# *********************************************************************

第三步:生成服务器证书

# 创建私钥
$ openssl genrsa -out ${HARBOR_HOST}.key 4096
# 生成签名请求
$ openssl req -sha512 -new \
  -subj "/C=CN/ST=BJ/L=BJ/O=xxx/OU=JSB/CN=${HARBOR_HOST}" \
  -key ${HARBOR_HOST}.key \
  -out ${HARBOR_HOST}.csr 
# 生成注册表主机证书
$ cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=reg.xxx.com
DNS.2=reg.xxx
EOF
$ openssl x509 -req -sha512 -days 3650 \
  -extfile v3.ext \
  -CA ca.crt -CAkey ca.key -CAcreateserial \
  -in reg.xxx.com.csr \
  -out reg.xxx.com.crt

第四步:配置和安装证书

cp reg.xxx.com.crt /data/cert/
cp reg.xxx.com.key /data/cert/
openssl x509 -inform PEM -in reg.xxx.com.crt -out reg.xxx.com.cert
cp reg.xxx.com.cert /etc/docker/certs.d/reg.xxx.com/
cp reg.xxx.com.key /etc/docker/certs.d/reg.xxx.com/
cp ca.crt /etc/docker/certs.d/reg.xxx.com/
# 证书目录
/etc/docker/certs.d/
    └── yourdomain.com:port   
       ├── yourdomain.com.cert <-- Server certificate signed by CA
       ├── yourdomain.com.key <-- Server key signed by CA
       └── ca.crt <-- Certificate authority that signed the registry certificate

4. 配置harbor

  • V1.8.0 后,harbor配置文件由原先的harbor.cfg改为harbor.yml
$ vim harbor.yml
hostname:reg.xxx.com        #完全限定域名或IP地址(不要使用localhost或127.0.0.1)。
data_volume: /data/harbor      #存储卷对应的宿主机目录,如: /data/harbor
harbor_admin_password:Harbor12345   #管理员的初始密码(仅在首次启动时有效),默认用户名/密码为:admin / Harbor12345。

# https配置
https:
  port: 443
  # 证书文件(绝对路径)
  certificate: /data/cert/reg.xxx.com.crt
  private_key: /data/cert/reg.xxx.com.key

5. 安装Harbor

# 准备 & 安装 & 查看
$ ./prepare 
$ ./install.sh
$ docker-compose ps    #查看harbor相关的docker进程

# 测试便可移除安装包,但不建议移除整个harbor安装目录,以备配置修改。
$ rm -f /usr/local/harbor/harbor.v1.9.1.tar.gz

6. 附:修改配置

# 修改端口号后,goharbor/nginx会自动做端口代理映射,即 https://reg.xxx.com 仍然有效。
$ cd /usr/local/harbor && vim harbor.yml    #修改配置(如80、443端口、数据卷等)

# 执行命令docker-compose
$ docker-compose stop
$ docker-compose up -d

# 重启docker(非必须) 
$ systemctl daemon-reload
$ systemctl restart docker.service

三. 客户端访问

1.修改Hosts

  • 如果Harbor宿主机位于局域网,则需要配置客户端Hosts
$ vim /etc/hosts    
192.168.1.x  reg.xxx.com

2.访问Harbor站点

  • 浏览器打开https://reg.xxx.com,如果有风险提示,忽略风险。
  • 登录(admin/Harbor12345),记得修改密码并关闭对外注册功能

3. 终端登录(Mac版)

  • 进入Mac钥匙串/系统/证书,将reg.xxx.com证书拖进去并设置为 始终信任(证书可从服务端拷贝或从浏览器导出),安装成功后记得`重启docker服务。
# 证书安装成功后,便可在终端登录harbor仓库
$ docker login reg.xxx.com

4. 终端登录(Linux版)

# 从服务器拷贝证书
$ mkdir -p /etc/docker/certs.d/reg.xxx.com
$ scp root@reg.xxx.com:/usr/local/harbor/ssl/reg.xxx.com.crt \
/etc/docker/certs.d/reg.xxx.com

# 重启docker服务,并登录容器仓库
$ systemctl restart docker
$ docker login reg.xxx.com

5. 注销登录

$ deocker logout

# docker登录缓存信息存储在下面文件中
$ cat ~/.docker/config.json

参考
https://www.cnblogs.com/haoprogrammer/p/11023926.html
https://www.jianshu.com/p/fb2ae3dc7986

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值