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

在实际生产运维中,每每须要把镜像发布到几10、上百台或更多的节点上。这时单台Docker主机上镜像已没法知足,项目愈来愈多,镜像就愈来愈多,都放到一台Docker主机上是不行的,咱们须要一个像Git仓库同样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库Harbor,将做为咱们容器云平台的镜像仓库中心。
前端

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


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

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


image.png

一、Harbor主要功能

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

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

  • 镜像复制redis

    能够将仓库中的镜像同步到远程的Harbor,相似于MySQL主从同步功能。sql

  • LDAP

    Harbor支持LDAP认证,能够很轻易接入已有的LDAP。数据库

  • 镜像删除和空间回收

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

  • 图形页面管理

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

  • 审计

    对仓库的全部操做都有记录。

  • REST API

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

二、Harbor组件


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

三、Harbor部署

环境要求:

image.png


Harbor安装有3种方式:

  • 在线安装:从Docker Hub下载Harbor相关镜像,所以安装软件包很是小

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

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

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

HTTP方式部署

基本配置:

image.png

准备配置文件:

# ./prepare


安装并启动Harbor:


# ./install.sh


查看运行状态:


image.png


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

若是有非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 

四、登陆Web页面


浏览器输入:http://10.206.240.188

帐号:admin  

密码:Harbor12345


image.png

这里有4个项目,library是默认自带的,一般用这个存储一些公共的镜像,这个项目下镜像谁均可以pull,但不能push,push须要先登陆。其余3个项目是我本身建立的,请忽略。

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

先建立一个用户:

image.png

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

image.png

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

七、上传镜像

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

image.png

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

image.png

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

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

image.png

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

image.png

八、下载镜像

其余Docker主机怎么下载刚推送的镜像呢? 
因为咱们搭建的Harbor是以HTTP提供服务的,而Docker CLI默认以HTTPS 访问仓库,因此要先配置可信任,不然pull镜像仓库失败。若是是HTTPS提供服务就不用配置这一步了。

image.png

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

相关文章
相关标签/搜索