docker 镜像仓库 Harbor 升级到 https
前言
由于公司内网 Harbor 服务最开始部署的时候是 http 的服务,通过在客户机上配置 insecure-registries
参数实现的内网访问
1 | { |
不过在公司部分 Windows 电脑上通过 WSL 进行开发时,配置好如上配置后有时会出现如下错误的情况(注:Linux 服务器上配置好后未遇到过)
1 | git pull harbor.akiya.cc/sample-images |
所以决定升级内网 Harbor 服务器到 Https 协议,并在内网 DNS 服务器上做好相关解析。这样以后使用镜像仓库时不用配置参数直接访问即可。
申请证书
如果域名是在云厂商购买的可以直接通过云厂商申请免费的 SSL 证书即可,阿里云、腾讯云等均有提供。也可以通过 freessl 申请免费证书。
如果域名为内部自定义域名,且没有在云厂商注册购买。则只能通过 openssl 自签证书使用了,具体可参考 Golang 使用 Gitlab 作为私有库 中Gitlab 搭建下创建自签证书中的脚本。
申请完成证书后,上传证书与秘钥文件到服务器上。
升级
停止已有 Harbor 服务,进入 Harbor 部署目录中使用命令
docker-compose down
停止修改
harbor.yml
文件,在其中启用 Https。注意 yaml 文件缩进1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: harbor.akiya.cc # 访问域名
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# # https port for harbor, default is 443
port: 443
# # The path of cert and key files for nginx
certificate: /data/cert/harbor.akiya.cc.pem # ssl 证书
private_key: /data/cert/harbor.akiya.cc.key # 证书秘钥
...再次执行
./prepare
通过脚本更新配置文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17./prepare
prepare base dir is set to /data/harbor
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
loaded secret from file: /secret/keys/secretkey
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir重新启动 Harbor
1
2
3
4
5
6
7
8
9
10
11docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db ... done
Creating harbor-portal ... done
Creating redis ... done
Creating registryctl ... done
Creating registry ... done
Creating harbor-core ... done
Creating nginx ... done
Creating harbor-jobservice ... done
等待启动完成后,通过 web 访问可以看到已经自动通过 80
跳转到 443
端口,证书信息也可以看到。
在服务器上取消 docker 的 insecure-registries
配置,可以正常拉取镜像文件。
- 本文标题:docker 镜像仓库 Harbor 升级到 https
- 本文作者:akiya
- 本文链接:https://little-star.love/posts/8eac9fcb/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!