一 Harbor 简介

Harbor软件网站:github.com/goharbor/ha…

1.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。

1.2 Harbor的特性

  1. 依据角色操控:用户和库房都是依据项目进行组织的,而用户在项目中能够拥有不同的权限。
  2. 依据镜像的仿制战略:镜像能够在多个Harbor实例之间进行仿制(同步)。
  3. 支撑 LDAP/AD:Harbor 能够集成企业内部已有的 AD/LDAP(相似数据库的一张表),用于对现已存在的用户认证和办理。
  4. 镜像删除和废物收回:镜像能够被删除,也能够收回镜像占用的空间。
  5. 图形化用户界面:用户能够经过阅读器来阅读,查找镜像库房以及对项目进行办理。
  6. 审计办理:一切针对镜像库房的操作都能够被记载追溯,用于审计办理。
  7. 支撑 RESTful API:RESTful API 供给给办理员关于 Harbor 更多的操控, 使得与其它办理软件集成变得更容易。
  8. Harbor和docker registry的联系:Harbor实质上是对docker registry做了封装,扩展了自己的事务模板。

1.3 Harbor的构成

Harbor 在架构上主要有ProxyRegistryCore servicesDatabase(Harbor-db)Log collector(Harbor-log)Job services 六个组件。

Proxy: Harbor的 Registry、UI、Token 服务等组件,都处在 nginx 反向署理后边。该署理将来自阅读器、docker clients 的请求转发到后端不同的服务上。

●Registry: 负责贮存 Docker 镜像,并处理 Docker push/pull 指令。因为要对用户进行拜访操控,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要带着一个合法的 Token, Registry 会经过公钥对 Token 进行解密验证。

●Core services: Harbor的中心功用,主要供给以下3个服务:

  1. UI(harbor-ui): 供给图形化界面,协助用户办理 Registry 上的镜像(image), 并对用户进行授权。
  2. WebHook:为了及时获取Registry 上image 状况改变的状况,在Registry 上装备 Webhook,把状况改变传递给 UI 模块。
  3. Token 服务:负责依据用户权限给每个 Docker push/pull 指令签发 Token。Docker 客户端向 Registry 服务发起的请求, 假如不包含 Token,会被重定向到 Token 服务,获得 Token 后再重新向 Registry 进行请求。

Database(harbor-db)为core services供给数据库服务,负责贮存用户权限、审计日志、Docker 镜像分组信息等数据。

Job services:主要用于镜像仿制,本地镜像能够被同步到远程 Harbor 实例上。

●Log collector(harbor-log): 负责搜集其他组件的日志到一个当地。

Harbor 的每个组件都是以 Docker 容器的形式构建的,因而,运用 Docker Compose 来对它进行部署。 一共分为7个容器运行,经过在docker-compose.yml地点目录中履行 docker-compose ps 指令来检查, 称号分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。 其间 harbor-adminserver 主要是作为一个后端的装备数据办理,并没有太多的其他功用。harbor-ui 所要操作的一切数据都经过 harbor-adminserver 这样一个数据装备办理中心来完结。

云原生Docker篇-----docker - harbor私有仓库部署与管理

二 部署 Harbor 服务

下载或上传 Harbor 装置程序

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

修正装备文件:vim harbor.cfg

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.1 拜访UI页面

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

公开:一切的人都能够在我的私有库房下载镜像

私有:只要我指定的用户角色才能够在我的私有库房项目中下载镜像

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

在我本地推送镜像到私有库房

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.2 其他主机想下载私有库房的镜像

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.3 harbor办理

2.3.1 创立用户

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.3.2 运用新创立的用户下载私有项目的镜像

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.4 日志检查

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.5 非项目成员无法推送镜像

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.5.1 在项目中增加lisi用户就能够推送镜像到项目中了

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.6 能够修正暗码

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.7 harbor私有库房的库房镜像同步

再准备一天主机做同步

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.7.1 同步库房

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.8 上传镜像做测试

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.9 harbor的数据目录

假如想要做harbor数据迁移,就打包这个文件里边的数据就能够了

/data/registry/docker/registry/v2/repositories

云原生Docker篇-----docker - harbor私有仓库部署与管理

2.10 harbor日志目录

/var/log/harbor

云原生Docker篇-----docker - harbor私有仓库部署与管理

三 重启docker-compose总有一些容器打不开怎么办

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

3.1 假如一切的容器都显现为UP正常了但是harbor仍是登录不上去怎么办?

云原生Docker篇-----docker - harbor私有仓库部署与管理

云原生Docker篇-----docker - harbor私有仓库部署与管理

总结

docker 私有库房一般运用5000端口

harbor 私有库房的镜像格式:
harbor_url/项目 称号/image_name:tag
公有库房:任何人不必登录库房就能拉取项目中的镜像
私有库房:需要登录库房,具有权限的用户才能拉取镜像