阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

企业级Docker镜像仓库Harbor部署与使用

238次阅读
没有评论

共计 1985 个字符,预计需要花费 5 分钟才能阅读完成。

在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台 Docker 主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台 Docker 主机上是不行的,我们需要一个像 Git 仓库一样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库 Harbor,将作为我们容器云平台的镜像仓库中心。

Habor 是由 VMWare 公司开源的容器镜像仓库。 事实上,Habor 是在 Docker Registry 上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: 管理用户界面,基于角色的访问控制,AD/LDAP 集成以及审计日志等,足以满足基本企业需求。 


官方地址:
https://vmware.github.io

Github:https://github.com/goharbor/harbor

 

企业级 Docker 镜像仓库 Harbor 部署与使用

1、Harbor 主要功能

  • 基于角色访问控制(RBAC)

    在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。
    例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。

  • 镜像复制

    可以将仓库中的镜像同步到远程的 Harbor,类似于 MySQL 主从同步功能。

  • LDAP

    Harbor 支持 LDAP 认证,可以很轻易接入已有的 LDAP。

  • 镜像删除和空间回收

    Harbor 支持在 Web 删除镜像,回收无用的镜像,释放磁盘空间。

  • 图形页面管理

    用户很方面搜索镜像及项目管理。

  • 审计

    对仓库的所有操作都有记录。

  • REST API

    完整的 API,方便与外部集成。

2、Harbor 组件

 

组件 功能
harbor-adminserver 配置管理中心
harbor-dbMysql 数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-uiWeb 管理页面和 API
nginx 前端代理,负责前端页面和镜像上传 / 下载转发
redis 会话
registry 镜像存储

3、Harbor 部署

环境要求:

企业级 Docker 镜像仓库 Harbor 部署与使用

 

Harbor 安装有 3 种方式:

  • 在线安装:从 Docker Hub 下载 Harbor 相关镜像,因此安装软件包非常小

  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大

  • OVA 安装程序:当用户具有 vCenter 环境时,使用此安装程序,在部署 OVA 后启动 Harbor

我们采用离线安装,首先下载离线安装包:https://github.com/vmware/harbor/releases

HTTP 方式部署

基本配置:

企业级 Docker 镜像仓库 Harbor 部署与使用

准备配置文件:

# ./prepare

 

安装并启动 Harbor:

 

# ./install.sh

 

查看运行状态:

 

企业级 Docker 镜像仓库 Harbor 部署与使用

 

部署完成,是不是很简单呢!

如果有非 Up 状态,先看日志:

# ls /var/log/harbor/

adminserver.log  jobservice.log  mysql.log  proxy.log  redis.log  registry.log  ui.log

 

HTTPS 方式部署:

如果想以 https 加密方式提供服务可以参考这个免费的视频教程:https://ke.qq.com/course/311382
或者参考官方文档:https://github.com/vmware/harbor/blob/master/docs/configure_https.md 

4、登录 Web 页面

 

浏览器输入:http://10.206.240.188

账号:admin  

密码:Harbor12345

 

企业级 Docker 镜像仓库 Harbor 部署与使用

这里有 4 个项目,library 是默认自带的,通常用这个存储一些公共的镜像,这个项目下镜像谁都可以 pull,但不能 push,push 需要先登录。其他 3 个项目是我自己创建的,请忽略。

5、library 项目赋予新用户 push 权限

先创建一个用户:

企业级 Docker 镜像仓库 Harbor 部署与使用

进入 library 项目,将用户加入这个成员:

企业级 Docker 镜像仓库 Harbor 部署与使用

这样 lizhenliang 用户就具备了对这个 library 项目的 push 权限。
注:创建新项目赋予用户权限同等方式。

7、上传镜像

接下来将刚才构建的镜像推送到 Harbor 仓库,先看看我们要推送的镜像:

企业级 Docker 镜像仓库 Harbor 部署与使用

在推送之前,需要注意第一列,这个完整格式是:

企业级 Docker 镜像仓库 Harbor 部署与使用

如果镜像只放在本地存储 REPOSITORY 写什么都可以,但推送到镜像仓库就必须指定仓库中心地址。

所以,先打重命名 REPOSITORY,其实就是引用源镜像标记了一个目标镜像:

企业级 Docker 镜像仓库 Harbor 部署与使用

访问拒绝,刚说过,push 需先登录:

企业级 Docker 镜像仓库 Harbor 部署与使用

8、下载镜像

其他 Docker 主机怎么下载刚推送的镜像呢? 
由于我们搭建的 Harbor 是以 HTTP 提供服务的,而 Docker CLI 默认以 HTTPS 访问仓库,所以要先配置可信任,否则 pull 镜像仓库失败。如果是 HTTPS 提供服务就不用配置这一步了。

企业级 Docker 镜像仓库 Harbor 部署与使用

pull 的地址跟 push 时是一样的。

说说

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1985字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中