说明
在Jenkins服务器上部署Harbor仓库,如果电脑内存允许,可以新加一台服务器部署Harbor。
八、集成Harbor
8.1 Harbor介绍
前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当前jar进行部署,这种方式在项目较多时,每个目标服务器都需要将jar包制作成自定义镜像再通过docker进行启动,重复操作比较多,会降低项目部署时间。
我们可以通过Harbor作为私有的Docker镜像仓库。让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中,只需要通知目标服务器,让目标服务器统一去Harbor仓库上拉取镜像并在本地部署即可。
Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能。
8.2 Harbor安装——原生方式部署
这里采用原生的方式安装Harbor。
- 下载Harbor安装包:
https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz
- 将安装包拖拽到Linux系统中并解压:
tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/
注:-C 选项的作用是:指定需要解压到的目录。
- 修改Harbor配置文件:
① 首先复制一份harbor.yml配置
# 进入目录 cd /usr/local/harbor # 复制一份yml文件,并编辑yml文件 cp harbor.yml.tmpl harbor.yml vim harbor.yml
② 编辑harbor.yml配置文件
- 启动Harbor
cd /usr/local/harbor ./install.sh
如果想要停止harbor容器实例,命令如下
docker-compose down harbor 使用docker ps 查看容器实例,就发现harbor容器已经关闭
查看日志:
5、登录Harbor
密码可以在/usr/local/harbor/harbor.yml
文件中看
首页信息:
8.3 Harbor使用方式
Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像。
在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像。
这里我使用的是公开的仓库。
8.3.1 添加用户构建项目
- 构建项目(设置为私有的话,后面从harbor上拉取镜像需要登录)
我这里直接使用公开仓库了(记得勾选公开)
私有仓库创建步骤:
创建用户:
给项目追加用户:
切换测试用户:
8.3.2 发布镜像到Harbor
- 修改镜像名称
名称要求:harbor地址/项目名/镜像名:版本
# 改名命令 docker tag [镜像id] 镜像仓库地址/项目名/镜像名:版本
这里我把mytest:v1.0.0
镜像改名为:192.168.2.211:80/repo/mytest:v1.0.0
- 修改
daemon.json
文件,支持从Docker仓库拉取镜像,并重启Docker
vim /etc/dokcer/daemon.json # 把自己的harbor仓库IP地址内容加进去,注意要在上一行结束的地方加逗号 "insecure-registries": ["192.168.2.211:80"] # 重启docker systemctl restart docker
- 登录harbor仓库,推送镜像,到harbor仓库查看
docker login -u 用户名 -p 密码 Harbor地址 # 这里登录我的仓库,并推送镜像 docker login -u admin -p Harbor12345 192.168.2.211:80 docker push 192.168.2.211:80/repo/mytest:v1.0.0
8.3.3 指定目标服务器从Harbor拉取镜像
跟传统方式一样,不过需要在目标服务器上先配置/etc/docker/daemon.json
文件,再重启docker
{ "registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"], "insecure-registries": ["192.168.2.211:80"] } # 重启docker systemctl restart docker #如果镜像仓库是私有的,需要先登录,执行docker login命令。由于这里是公开的仓库,所以不用登录 docker login -u 用户名 -p 密码 harbor仓库地址