开源Docker仓库管理器Harbor
部署准备
- 安装docker和docker-compose
- 多台虚拟机…
部署步骤
10.0.0.133更新
1 | apt update |
这里使用官方脚本安装
1 | sh <(curl -fsSL https://get.docker.com) |
启动docker
1 | docker start docker |
安装docker-compose
1 | wget -O /usr/bin/docker-compose -P /usr/bin \ |
添加执行权限
1 | chmod +x /usr/bin/docker-compose |
测试
1 | docker-compose version |
下载Harbor镜像包,这里是离线安装
1 | wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz |
解压
1 | tar xf harbor-offline-installer-v2.8.2.tgz -C /usr/local |
自签证书,创建存放自签证书目录
1 | mkdir -p /data/harbor/certs && cd /data/harbor/certs |
生成 CA(证书颁发机构)私钥 (ca.key) 和证书 (ca.crt)
1 | openssl genrsa -out ca.key 4096 |
生成 Harbor 服务器私钥 (harbor.test.com.key)
1 | openssl genrsa -out harbor.test.com.key 4096 |
生成 Harbor 服务器证书签名请求 (harbor.test.com.csr)
1 | openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" \ |
创建 v3.ext 文件,指定证书扩展属性
1 | cat << EOF > v3.ext |
使用 CA 证书和私钥,对之前生成的 CSR 进行签名,生成最终的 Harbor 服务器证书 (harbor.test.com.crt)
1 | openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key \ |
修改 harbor 部分相关参数
1 | cp /usr/local/harbor/harbor.yml.tmpl /usr/local/harbor/harbor.yml && vim /usr/local/harbor/harbor.yml |
同时,这里要注意,因为是自签证书,浏览器访问还是会不信任,导致镜像无法推送
2种方法,第一,在客户端安装自签证书,第二写docker配置文件,这里就采用第二种了
1 | echo -e '{\n"insecure-registries": ["harbor.test.com"]\n}' > /etc/docker/daemon.json |
启动仓库
1 | cd /usr/local/harbor && ./install.sh && ./prepare && docker-compose up -d |
写入service文件,配置自启动
1 | cat << EOF > /lib/systemd/system/harbor.service |
启动harbor
1 | docker-compose down |
linux登录仓库,输出Login Succeeded则成功,如出现其他报错,请检查日志或者报错原因
1 | docker login -u admin -p Harbor12345 harbor.test.com |
接下来我们去网页端登录看看,可以看到还是提示不安全,不交钱就是这样
登录进去创建一个项目,我这边已经创建了
然后我们就来推送一个镜像试试,首先看看有什么镜像可以看到,我已经操作了一边。
首先重命名
1 | docker tag alpine-nginx:1.24.0-v3 harbor.test.com/nginx/alpine-nginx:1.24.0-v3 |
接着推送就完成了
1 | docker push harbor.test.com/nginx/alpine-nginx:1.24.0-v3 |
然后也可以把镜像拉下来
1 | docker pull harbor.test.com/nginx/alpine-nginx:1.24.0-v3 |
在web端我们也可以看到镜像,harbor还压缩了这里虽然完成的harbor的部署,但是始终是一个单点问题,所有接下来我们继续部署高可用harbor
使用另一台空闲机10.0.0.132安装 docker 和 docker-compose 环境
1 | sh <(curl -fsSL https://get.docker.com) && wget -O /usr/bin/docker-compose -P \ |
harbor包和service文件我已经用scp命令拷贝过来
1 | tar xf harbor-offline-installer-v2.8.2.tgz -C /usr/local && cd /usr/local/harbor |
那么我登上前面配置的harbor上进行高可用配置,前面的ip地址是133,它对应的仓库地址就是132
做完这里,在 10.0.0.133 push镜像时已经可以同步到10.0.0.132了,那么132也同理配置,这里就不再过多叙述
部分参考资料
- docker-compose 官方下载地址: https://docs.docker.com/compose/
- docker 官方文档安装地址:https://docs.docker.com/engine/install/ubuntu/
- harbor 下载地址: https://github.com/vmware/harbor/releases
- harbor 安装文档: https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md