• Docker 私有仓库方案比较与搭建


    作者博客:vps精选网    

    我们知道docker镜像可以托管到dockerhub中,跟代码库托管到github是一个道理。但如果我们不想把docker镜像公开放到dockerhub中,只想在部门或团队内部共享docker镜像,能不能项gitlab一样在搭建私有的仓库呢?答案是肯定的,docker也支持将镜像存到私有仓库。下面将验证docker原生的仓库和开源的私用仓库,并分析其特点。

    1docker原生仓库搭建

    1.1配置要求和基本原理

    配置要求

    要求docker版本:1.6+

    Docker registry 版本 2.0+

     

    仓库原理


    Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。

    一次docker pull (即用户从客户端向仓库拉镜像),发生的交互。

     

       

    1客户端向索引请求ubuntu镜像下载地址

    2索引回复:ubuntu所在仓库A、 ubuntu镜像的校验码(Checksum)和所有层的Token

    3客户端向仓库A请求 ubuntu的所有层(仓库A负责存储ubuntu,以及它所依赖的层)

    4仓库A向索引发起请求,验证用户Token的合法性

    5索引返回这次请求是否合法

    6客户端从仓库下载所有的层,仓库从后端存储中获取实际的文件数据,返给客户端

     

    具体配置步骤参考官方文档:https://docs.docker.com/registry/deploying/

     

    1.2搭建步骤

    1.2.1搭建基础仓库

    是在docker容器中运行原生私有仓库。

    下载仓库镜像:

    docker pull registry:2
    

    运行仓库:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2

    上传下载镜像到本地仓库

    docker push localhost:5000/ubuntu

    1.2.2配置存储

    用以下命令启动仓库

    docker run -d -p 5000:5000 --restart=always --name registry 
    
      -v /opt/registry:/var/lib/registry registry:2

    -v /opt/registry:/var/lib/registry 表示将本地目录/opt/registry映射到仓库容器中的/var/lib/registry目录,该目录中存储仓库中的镜像文件。

    1.2.3通信加密

    客户端与仓库通信加密分为三个等级:不采用通信加密,采用自签名证书加密,采用通过认证的证书加密

    1不采用tls加密

    不用tls加密,就不能使用基础的用户认证功能

    2采用通过认证的证书加密

        官方推荐采用通过认证的证书加密,但目前无法获取通过认证的证书

    3采用自签名的证书加密

    本次原型搭建是采用自签名证书加密

    推荐使用知名机构签名了的CA证书

    1.2.4访问授权

    注:要开启用户访问认证,就必须先采用通信加密

    访问认证有三种方式:分别是silly、token、htpasswd

    简单介绍下用htpasswd怎么实现访问认证

    首先,创建用户的账号密码,下面命令创建了用户testuser/testpassword

    mkdir auth
    
    docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword > auth/htpasswd

    然后,以htpasswd访问限制的方式开启registry

    在开启命令后添加
    -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" 

    登陆registry

    docker login –u testuser –p testpassword myregistrydomain.com:5000

    这种方式就是在auth/htpasswd白名单中添加哪些用户,哪些用户就可以登陆registry。这种方式的权限控制比较粗略。

    1.2.5 其他高级功能

    另外原生的仓库还支持以下高级功能

    对接AD/ldap:通过接入AD/ldap管理用户及授权

    日志审计:方便查错及跟踪行为

    分布式存储:在仓库中镜像数量剧增时,需要考虑对接分布式存储

    负载均衡:仓库中镜像访问量剧增时,需要考虑采用负载均衡

    1.3存在的问题

    1原生的私有仓库提供的功能不够丰富,很多功能需要二次开发。如用户权限控制方面,基本没有实现,需要重新开发

    2缺少UI界面,不适用于生产环境

    2docker私有仓库开源解决方案比较

    如果docker原生的仓库不能满足需求,这里提供了几种开源的解决方案。网上对私有仓库解决方案的比较不是很多,收集了以下三个较常见的私有仓库解决方案

    2.1protus

    Portus(by SUSE)是用于 Docker Registry API(v2)的开源前端和授权工具,最低要求registry版本是 2.1。它可以作为授权服务器和用户界面。

    优缺点

    优点:
    1.安全:Portus 实现了最新的Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可 push/pull 镜像。
    2.轻松管理用户: 在 Portus 映射你的公司,可以定义任意数量的 Team,并从 Team 添加和移除用户。Team 有三种类型的用户:Viewers ,只能 pull 镜像;Contributors,可以 push/pull 镜像;Owners,类似 contributors,但可以从 team 添加或移除用户。 
    3.搜索: Portus 提供你的私人注册表的内容的预览,同时有一个快速搜索镜像的功能。 
    4.审计: 用户的所有相关事件都会被Portus自动记录,并可被管理员进行用户分析。

    5支持对接到AD/LDAP

     

    缺点:

    1UI界面不支持中文

    部署过程

    项目github托管地址:https://github.com/SUSE/Portus

    注:部署完成后,界面无法与registry容器通信。也一直没找到如何解决,建议采用下一个方案harbor

    2.2harbor

    Project Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能

    优缺点

    优点:

    1可以实现 images 的私有存储

    2支持日志统计

    3支持基于角色的访问控制(Role Based Access Control)

    4支持创建多项目

    5提供了管理UI界面,并原生支持中文。

    6支持AD/LDAP集成

     

    缺点:

    暂未发现

    2.3AppHouse

    未进行深入了解,如果后续有需要,可继续调研

    3harbor私有仓库搭建步骤流程

    参考官方教程:

    https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

    过程比较简单,没遇到问题,不再赘述

    4harbor 功能及使用说明

    界面如下图:

    通过测试以下功能均可用,且体验良好。

    以管理员(admin/Harbor12345)登入登出registry

    创建项目

    创建用户test

    以test身份pull/push 镜像

    搜索功能

    日志审计功能

      作者博客:vps精选网

  • 相关阅读:
    设计模式学习(十二) 责任链模式
    设计模式学习(十一) 享元模式
    设计模式学习(十) 外观模式
    设计模式学习(九) 装饰模式
    设计模式学习(八) 组合模式
    设计模式学习(七) 桥接模式
    设计模式学习(六) 代理模式
    设计模式学习(五) 适配器模式
    设计模式学习(四) 原型模型
    设计模式(三) 建造者模式
  • 原文地址:https://www.cnblogs.com/jaazz/p/9334183.html
Copyright © 2020-2023  润新知