环境准备
- 安装docker。
centos源比较拉胯,建议替换成阿里源,参考:https://segmentfault.com/a/1190000039099166
yum config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
yum install -y docker-ce
- 安装docker compose。
docker compose有两个版本,v1版本的使用命令为docker-compose, v2的使用命令为docker compose,两个功能理论上一致。如果使用的是mac或windows,升级docker到最新版本,就可以直接使用docker compose命令。harbor需要的是v1版本的docker-compose命令,可以通过以下命令获取
curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
v2版本的可以通过yum install -y docker-compose-plugin
- 安装openssl,用于生成证书。
- harbor下载:
https://github.com/goharbor/harbor/releases/download/v1.10.10/harbor-offline-installer-v1.10.10.tgz
如果要使用其他版本,在此处挑选:https://github.com/goharbor/harbor/releases。选择offline版本。
安装
- 生成证书
参考: https://www.jianshu.com/p/1163d1ae8029 - 配置yaml。
解压下载的harbor安装文件,复制一份yml配置文件,修改。
hostname: 192.168.159.132 // 前端登录的域名,此处直接使用IP地址。
http:
port: 80 // http服务的端口号
https:
port: 443 // https服务的端口号
certificate: /data/cert/192.168.159.132.crt // 第一步生成的证书
private_key: /data/cert/192.168.159.132.key // 证书私钥
harbor_admin_password: MyHarbor123!! // 管理员密码,账号为admin。
database:
password: root123
max_idle_conns: 50
max_open_conns: 1000
data_volume: /data // 镜像的存储位置,如果要使用外部存储,参考registry的存储配置。
- 安装
先创建一个镜像存储位置mkdir /data
;
拷贝证书文件到对应的目录下mkdir /data/cert; cp xxx.key xxx.crt /data/cert/
;
执行install.sh文件。 - 使用
将步骤1生成的根证书ca.crt
加入到系统的信任根证书中;然后浏览器访问前面的地址,登录、使用。
使用S3存储替代本地存储
hostname: 192.168.159.132 // 前端登录的域名,此处直接使用IP地址。
http:
port: 80 // http服务的端口号
https:
port: 443 // https服务的端口号
certificate: /data/cert/192.168.159.132.crt // 第一步生成的证书
private_key: /data/cert/192.168.159.132.key // 证书私钥
harbor_admin_password: MyHarbor123!! // 管理员密码,账号为admin。
database:
password: root123
max_idle_conns: 50
max_open_conns: 1000
data_volume: /data // 镜像的存储位置,如果要使用外部存储,参考registry的存储配置。
storage_service
s3:
accesskey: awsaccesskey
secretkey: awssecretkey
region: us-west-1
regionendpoint: http://myobjects.local
bucket: bucketname
encrypt: true
keyid: mykeyid
secure: true
v4auth: true
chunksize: 5242880
multipartcopychunksize: 33554432
multipartcopymaxconcurrency: 100
multipartcopythresholdsize: 33554432
rootdirectory: /s3/object/name/prefix
使用火山引擎的TOS作为存储部署完后,可能在推镜像时仍旧无法推送上去,报500错误。查看harbor日志(harbor-log容器内的/var/log/docker/registry.log文件),可以看到s3aws: InvalidPathAccess: Forbidden path to access server
报错,原因是TOS不支持path style的访问方式,需要改为virtual模式。
需要再添加一个配置参数forcepathstyle: false
到s3配置中,如果还没有生效,直接修改下面的代码写死false,然后重新编译打包镜像,然后修改docker-compose.yaml
文件里的registry
镜像为自己打包的镜像即可。
https://github.com/distribution/distribution/blob/main/registry/storage/driver/s3-aws/s3.go
注:docker-compose.yaml
文件是在执行prepare
时生成的,手动修改后,需要再修改下install.sh
文件,将其中执行prepare
的那一行注释掉。
参考
官网:https://goharbor.io/docs/2.1.0/install-config/installation-prereqs/
中文:https://www.361way.com/harbor-install/6511.html
TODO: 待完善一个完整的部署流程。补充开启重定向的功能。