介绍
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
部署环境准备
服务器配置
系统 | 配置 | ip |
---|---|---|
centos 7.4 | 4/8G/200G | 172.21.16.90 |
下载所需文件
docker-compose 下载
docker compose 发布页面下载最新的 docker-compose 二进制文件
1 | # wget https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64 |
- 官方的安装
1
2# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
harbor 下载
harbor 安装方式有两种,一种是在线安装,一种是离线安装,这里由于网络不好,使用的是离线安装,harbor发布页面下载最新的 harbor 离线安装包
1 | # wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz |
开始安装
docker 安装
1 | # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
注意: 不添加/etc/sysctl.d/k8s.conf
启动docker会提示WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
导入 docker images
导入离线安装包中harbor相关的 docker images:
1 | # cd harbor |
修改 harbor.yml 文件
1 | # vim harbor.yml |
注: 新版本的邮箱、ldap现在都不需要在配置文件里面来添加配置了,直接通过web界面来进行配置即可,这里我只是添加进来,保留,😁😁😁
加载和启动 harbor 镜像
1 | # mkdir /data |
访问管理界面
确认所有组件都工作正常:
1 | # docker-compose ps |
harbor 组建介绍
- harbor-core: Harbor的核心功能,主要提供以下服务:
- UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
- webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
- token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
- harbor-db: 为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
- harbor-jobservice: harbor-jobservice 是harbor的job管理模块,job在harbor里面主要是为了镜像仓库之前同步使用的;
- harbor-log: 为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
- nginx: nginx负责流量转发和安全验证,对外提供的流量都是从nginx中转,所以开放https的443端口,它将流量分发到后端的ui和正在docker镜像存储的docker registry。
- redis: 存储缓存session信息
- registry: 官方的Docker registry ,负责储存Docker镜像
- registryctl: 负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。
在浏览器访问http://reg.xxlaila.cn, 用账号 admin 和 harbor.yml 配置文件中的默认密码 Harbor12345 登陆系统
harbor 运行时产生的文件、目录
harbor 将日志打印到 /var/log/harbor 的相关目录下,传统的docker logs XXX 或 docker-compose logs XXX 看不到容器的日志。只有使用常用系统命令来进行日志的查看
1 | # # 日志目录 |
其它操作
下列操作的工作目录均为解压离线安装文件后生成的 harbor 目录。
1 | # # 停止 harbor |