目录
8.6、移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移
②把项目中的镜像数据进行打包持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下
8.7、如需重新部署,需要移除 Harbor 服务容器全部数据
一、Docker Harbor概述
1、什么是Harbor
Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。
既有可视化web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像管理权限以及控制功能。
Harbor是VM公司开源的企业级Docker Registry项目
2、Harbor的优势与特点。
①基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
②基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
③支持LDAP/AD:Harbor可以集成企业内部已有的AD/LDAP(类似数据库的一张表),用于对已存在的用户认证和管理。
④镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间
⑤图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理
⑥审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
⑦支持RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
⑧Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模块。
3、Harbor的构成
Harbor在架构上主要有proxy,registry,core services,database(Harbor-db),log collector(Harbor-log),job services六个组件。
3.1proxy:是一个nginx的前端代理,harbor的registry,ui,token服务等组件,都处在nginx反向代理后边。该代理将来自浏览器,docker clients的请求转发到后端的不同服务上。
3.2registry:负责存储docker镜像,并处理docker push/pull命令。由于要对用户进行访问控制,即不同用户对docker镜像有不同的读写权限,registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token,registry会通过公钥对token进行解密验证。
3.2.1认证的三种方式:
扩展
令牌
用户密码
ssl
3.3core services:harbor的核心功能,主要提供以下3个服务:
①UI:提供图形化界面,帮助用户管理registry上的镜像,并对用户进行授权
②Webhook:为了及时获取registry上images状态变化的情况,在registry上配置webhook,把状态变化传递给UI模块
③token服务:负责根据用户权限给每个docker push/pull命令签发token。docker客户端向registry服务发起的请求,如果不包含token,会被重定向到token服务,获得token后再重新向registry进行请求
3.4database:为core services提供数据库服务,负责储存用户权限,审计日志,docker镜像分组信息等数据。
3.5job services:主要用于镜像复制,本地镜像可以被同步到远程harbor实例上。
3.6log collector:负责收集其他组件的日志到一个地方
harbor的每个组件都是以docker容器的形式构建的,因此,使用docker compose来对他进行部署。总共分为7个容器运行,通过在docker-compose.yml所在目录中执行docker-compose ps命令来进行查看,名称为:nginx,harbor-jobservices,harboe-ui,harbor-db,harbor-adminserver,registry,harbor-log。
其中harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的数据都通过harbor-adminserver这样一个数据配置管理中心来完成。
二、搭建本地私有仓库
docker pull registry
#下载registry镜像
vim /etc/docker/daemon.json
#daemon.json中添加私有镜像仓库地址,内容如下
{
"insecure-registries":["192.168.170.111:5000"],
#此行注意填写自己的ip注意最后有逗号
"registry-mirrors": ["https://b0u3e8x4.mirror.aliyuncs.com"]
}
systemctl restart docker.service
#重启docker服务使本地私有仓库生效
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
#运行registry容器,-v指定数据卷挂载目录,-p指定映射端口号,--restart=always容器重启策略即开机自启此容器
docker tag centos:7 192.168.170.111:5000/centos:v1
#为镜像重新打私有仓库标签
docker push 192.168.170.111:5000/centos:v1
#将v1版本上传到私有仓库中
curl 192.168.170.111:5000/v2/_catalog
#列出私有仓库的所有镜像
curl 192.168.170.111:5000/v2/centos/tags/list
#李处私有仓库中centos的所有标签镜像
docker rmi 192.168.170.111:5000/centos:v1
#删除本地原有v1镜像
docker pull 192.168.170.111:5000/centos:v1
#测试从私有仓库下载v1镜像




三、Docker Harbor私有仓库架构拓扑

1、所有的请求或认为的操作都会首先交给proxy(反向代理)
2、proxy会先将请求转发给后端Core services,Core services中包含UI,token(身份验证服务)、webhook(网站的一些服务功能)
3、转发给registry(镜像存储),若需要下载镜像等权限操作,需要通过Core services中的token令牌的身份验证服务才行。
4、每一次下载和上传都会产生操作记录,生成日志,保存到database中
5、database记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作
四、Harbor构建Docker私有仓库
1、环境配置
| 主机 |

最低0.47元/天 解锁文章
2765

被折叠的 条评论
为什么被折叠?



