Harbor 是由 VMware 公司开源的企业级的 Docker Registry 管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,具有 web 管理功能,有了它之后能够很方便的管理容器镜像,搭配 Jenkins 使用很是方便。
Harbor 由多个组件组成,每个组件都是以 Docker 容器的形式构建的,因此,我们使用 Docker Compose 来对它进行部署。用于部署 Harbor 的 Docker Compose 模板位于 harbor/docker-compose.yml 中,这个模板文件中有多个镜像定义,常见有:harbor-log、harbor-db、harbor-core、harbor-portal等等,版本不一样,所以依赖的容器熟练不一样,需要借助 docker-compose 去加载 docker-compose.yml 工程配置文件来启停 Harbor 组件容器。
所以我们需要提前安装好Docker Compose
1、下载 Docker Compose,设置权限
1、下载安装包
官网地址:https://goharbor.io/
下载地址: https://github.com/goharbor/harbor/releases
这里直接用 wget 下载,可能会因为网络问题下载比较慢,这里可以自行使用迅雷下载,下载完成后上传到相应的服务器上
wget 方式下载(比较慢):wget https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz
2、解压配置
barbor.yml示例如下:
编辑完执行 install.sh 脚本进行安装
报了一个错误,提示我现在的版本是 1.13.1 ,需要安装 17.06.0 以上的版本
第一步:
第二步:
重新执行 install.sh 安装 harbor
4、访问 harbor
这里我只用了同一台服务器配置,如果大家有多个服务器的,可以在另一台安装 docker,编辑 daemon.json 把 IP 修改成安装 harbor服务器的 IP 即可。
执行 push 时出现以下错误
原因分析:
错误提示对存储库访问未经授权,这是因为 harbor 上的访问认证导致的,需要在服务器上进行 harbor 仓库登录。
另外一种登陆:
登录以后我们再次推送
这里我们删除镜像再从仓库 pull 下来
如果要借助 Jenkins、Maven 等工具将构建好的Docker images push 到某个服务器的 Docker 上,就必须开启该服务中 Docker 的远程连接接口。比如,我通过 Jenkins 将镜像推送到 192.168.2.129 的 Docker 服务里面,就在这个服务里面配置 Docker。
1、编辑 Docker 服务的配置文件
在 ExecStart 这里加入如下内容
在 /etc/docker/daemon.json 中写入以下内容
4.1、引入 Docker 插件
4.2、编写 Dockerfile
这里需要主要一点:Dockerfile 文件和 pom.xml 同一级才能生效,不然 jenkins 构建会报错
push 代码到 gitee 上面
4.3、jenkins 中在创建的任务中配置打包构建并且 images 镜像推送
最后启动镜像
这里有个问题就是,因为我所有的操作都是在同一个服务器完成,在实现功能的过程中出现了很多的问题,最后都找到解决的办法,大家可以实现多服务器分配操作不同的功能,例如:
大致的流程图如下: