360私有云容器镜像仓库简介

镜像仓库,顾名思义就是存储镜像的。Docker 仓库的概念跟Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。用户制作好镜像push到仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。本文主要介绍360私有云HULK使用的镜像仓库Harbor。

一、什么是Harbor

Habor是由VMWare公司开源的容器镜像仓库,是一个用于存储和分发Docker镜像的企业级Registry服务器。

Harbor主要是提供了一些企业级的管理功能,而镜像存储用的还是docker registry,相当于docker registry的反向代理。

1. Harbor架构

360私有云容器镜像仓库简介

如上图所示,Harbor由6个组件组成:

Proxy:nginx反向代理。上图来自官网,已经滞后了。目前到harbor的所有请求都必须走nginx,包括上图中Proxy–> Registory这条。

Registry:负责存储Docker图像和处理Docker push/pull命令。由于Harbor需要加强对映像的访问控制,因此注册中心将引导客户端到令牌服务,以便为每个pull或push请求获得一个有效的令牌。

Core services:港口的核心功能,主要提供以下服务:

UI:提供了一个web管理页面,当然还包括了一个前端页面和后端API。

Webhook:在Registory中配置,镜像复制,日志更新都是同伙该功能实现。

Token service:令牌服务,如果从Docker客户机发送的请求中没有令牌,注册中心将把请求重定向到令牌服务。

Job services:镜像复制。

Log collector:日是收集。

2. HULK使用的Harbor功能

(1) 用户管理

基于角色的访问控制:用户分为三种角色:项目管理员(MDRWS)、开发人员(RWS)和访客(RS),当然还有一个造物主admin系统管理员。

注:M:管理、D:删除、R:读取、W:写入、S:查询。

(2) 项目管理

项目管理是系统最主要的一个功能模块,项目是一组镜像仓库的逻辑集合,是权限管理和资源管理的单元划分。一个项目下面有多个镜像仓库,并且关联多个不同角色的成员,镜像复制也是基于项目的,通过添加复制规则,

可以将项目下面的镜像从一个harbor迁移到另一个harbor,并且可以通过日志查看复制过程,并有retry机制。

(3) 权限管理

配置管理主要是配置harbor的认证模式,企业内部使用,通常都是对接到公司LDAP上面,我们目前用的数据库认证;还可以设置token的有效时间。

(4) 镜像复制

HULK多机房就是通过镜像复制功能实现的,可在不同的数据中心、不同的运行环境之间同步镜像。

目前HULK上,用户申请容器服务后,我们会为其创建个Harbor的project(下图中的xxl-api即为Harbor中的项目名),

并为其分配两个用户名,一个RWS、一个RS,xxl-api是只读用户,还有一个对用户隐藏的xxl-api-p开发人员用户。以达到用户只能操作自己私有仓库的目的。

3. Harbor的高可用负载均衡

通过三个harbor完成高可用部署,前面通过负载均衡器(HULK上的LVS)对外提供服务。共享数据库与缓存。

360私有云容器镜像仓库简介

多机房

多机房可以应对单机房s3异常,机房孤岛等及特殊情况,同时可以减轻主机房负担。

目前我们有bjyt(主)和shyc2(从)两套harbor,push都到主,k8s拉镜像可以选择拉主或者从。

每个机房的harbor组件完全独立,包括s3和数据库。目的就是为了即使出现孤岛也不会影响服务。

二、什么是镜像

镜像就是,联合文件系统(UnionFS),目前用的驱动是overlay2。

镜像的基础层是rootfs:任何程序运行时都会有依赖,无论是开发语言层的依赖库,还是各种系统lib、操作系统等,不同的系统上这些库可能是不一样的,或者有缺失的。为了让容器运行时一致,docker将依赖的操作系统、各种lib依赖整合打包在一起(即镜像),然后容器启动时,作为它的根目录(根文件系统rootfs),使得容器进程的各种依赖调用都在这个根目录里,这样就做到了环境的一致性。

Layer:Dockerfile中的基础是rootfs,而之后的每一个操作都是一层,如:RUN、ADD等命令。所有为了镜像体积小写,可以把多个RUN命令整合成一行,这样多层就变成一层了。

镜像只有最上一层是读写的,其余都是只读的(目录的without属性)。所谓without属性union文件系统中,如果删除的文件在只读层,最上层看到文件已经删除,但是只读层文件依然存在,在最上层做改文件without隐藏文件实现。rm mnt/haha.log操作和touch a/.wh.haha.log效果相同。

1. 容器的镜像挂载

docker支持多种graphDriver,包括vfs、devicemapper、overlay、overlay2、aufs,docker镜像存储驱动目前用的是overlay2。

docker默认的存储目录是/var/lib/docker

[root@p22295v zhangzhifei]# ls -lrt /var/lib/docker/ 

total 156 

drwx--x--x   3 root root  4096 Dec  6  2018 containerd 

drwx------   4 root root  4096 Dec  6  2018 plugins 

drwx------   3 root root  4096 Dec  6  2018 image 

drwx------   2 root root  4096 Dec  6  2018 trust 

drwxr-x---   3 root root  4096 Dec  6  2018 network 

drwx------   2 root root  4096 Dec  6  2018 swarm 

drwx------   2 root root  4096 Dec  6  2018 builder 

drwx------  89 root root 12288 Jul 17 11:07 volumes 

drwx------   2 root root  4096 Jul 17 14:30 runtimes 

drwx------   2 root root  4096 Jul 23 12:51 tmp 

drwx------ 758 root root 94208 Jul 29 19:12 overlay2 

drwx------  80 root root 12288 Jul 29 19:12 containers 

我们运行个容器演示下:

[root@p22295v zhangzhifei]# docker run -it -d  kraken-agent:dev  

83555ad8c034682ad885fc9e320bfb1f8b75498b61a1a8684d738c411caa930b 

启动一个容器,在/var/lib/docker/overlay2目录下生成一个容器视图层,目录包括diff,link,lower,merged,work。

diff记录每一层自己内容的数据,link记录该层链接目录(实际是l目录下到层的链接),比如在容器中创建目录或在diff新增该目录。

根据存储数据及功能可以把这些层分为3部分:

只读层

相关推荐
新闻聚焦
猜你喜欢
热门推荐
  • 微软AI面试题有多难?这里有一份样卷

      究竟什么样的AI人才能被微软这样的巨头聘用呢?今天,文摘君就淘来了几道微软AI 面试题,同时给出了最基本的解答......

    06-25    来源:澎湃新闻网

    分享
  • 全球最聪明的大脑怎么看AI?他们预测了

      2017年AI领域取得了诸多成果。2018年AI又将何去何从?以下是来自世界顶级研究人员和行业领军人物对2018年AI领域发展作......

    02-20    来源:虎嗅网

    分享
  • 2017JavaScript框架战报 - React分战场

      我们来看看与React有关的软件包的生态系统。当Facebook构建React时,就有许多来自开源社区的第三方软件包。为提供完......

    02-27    来源:湖北新闻网

    分享
  • 小白学数据:教你用Python实现简单监督学

      监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近......

    03-05    来源:今日头条

    分享
  • 现代编程语言Swift、Kotlin等十大有趣功能

      最近学习了一些现代编程语言,比如Reason,Swift,Kotlin和Dart。这些编程语言提供了许多新功能,本文主要分享了我认......

    04-29    来源:祁东新闻网

    分享
  • 领域场景分析的6W模型

      组成场景的要素常常被称之为6W模型,即描写场景的过程必须包含Who,What,Why,Where,When与hoW这六个要素。......

    04-30    来源:砍柴网

    分享
  • 开源应用服务器WildFly 12发新季度交付模式

      WildFly 12 Final版本现在已经可以下载了,WildFly是一款灵活的开源应用服务器,支持开发人员构建轻量级应用程序。支持......

    05-10    来源:青岛新闻网

    分享
  • 基于Spring Cloud的微服务落地

      微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,......

    06-04    来源:广西新闻网

    分享
  • 为什么阿里工程师纷纷在内网晒代码?

      前阵子,在阿里一个小黑屋里,5名对代码有着极致追求的工程师参与阿里代码领域最高荣誉“多隆奖”的最终角逐。......

    06-08    来源:四川新闻网

    分享
  • 超级大汇总!200多个最好的机器学习、

      我把这篇文章分为了四个部分:机器学习,自然语言处理,python和数学。在每个部分中我都列举了一些主题,但是因......

    09-25    来源:洛阳新闻网

    分享
返回列表
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。