V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
daocloud
V2EX  ›  云计算

DaoCloud 宣布 Docker Hub Mirror 服务永久免费

  •  1
     
  •   daocloud · 2015-03-19 16:30:13 +08:00 · 10983 次点击
    这是一个创建于 3529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2014年末,DaoCloud博客发布了《玩转Docker镜像》一文,以非常低调的方式宣布了Docker Hub Mirror服务的正式上线。在国内特殊网络环境下,Mirror服务显著加快了Docker Image的下载速度。一转眼,3个月过去了,在没有任何大规模推广宣传的情况下,Mirror服务用户已经达到数千人,各类Docker Image下载总量超过了5万。

    今天,我们正式宣布,由DaoCloud运维的Docker Hub Mirror服务,永久免费

    什么是Docker Hub Mirror?

    根据Docker的官方文档,Mirror的定义是:

    Such a registry is provided by a third-party hosting infrastructure but is targeted at their customers only. Some mechanism ensures that public images are pulled from a sponsor registry to the mirror registry, to make sure that the customers of the third-party provider can docker pull those images locally.

    Mirror是Docker Registry的一种特殊类型,它起到了类似代理服务器的缓存角色,在用户和Docker Hub之间做Image的缓存。 这个功能的设计目的是为了企业客户访问Docker Hub时降低网络开销,然而在中国这个巨大的局域网环境中,Mirror恰恰可以作为提升墙内下载速度的一种手段。

    Mirror跟Private Registry有本质区别。Private Registry是开发者或者企业自建的Image存储库,通常用来保存企业内部的Docker Image,用于内部开发流程和产品的发布、版本控制。Mirror是一种代理中转服务,我们提供的Mirror服务,直接对接Docker Hub的官方Registry,Docker Hub上有数以十万计的各类Docker Image。在使用Private Registry时,需要在Docker Pull,或Dockerfile中直接键入Private Registry的地址,通常这样会导致跟Private Registry的绑定,缺少灵活性。使用Mirror服务,只需要在Docker Daemon的配置文件中加入Mirror参数,即可在全局范围内透明的访问官方的Docker Hub,避免了对Dockerfile Image引用来源的修改。

    Mirror服务后台架构实现

    Mirror是Docker的官方机制,它是Registry的一种特殊类型,在部署了Registry之后,需要开启Mirror模式并做一定的配置。具体的流程如下:

    准备工作

    • 在公有云环境部署Mirror Registry,并优化存储和网络访问(后文会详述)
    • 在客户端,修改Docker的配置文件,添加registry-mirror参数(Mirror控制台中有详细的配置步骤)

    Docker Hub由Index和Registry构成,Index保存Image Layer的hash和关联关系等元数据(Metadata),Registry用于存储Image Layer的实际二进制数据。在客户端没有配置registry-mirror参数的情况下,每一次docker pull,客户端都会先连接Index获取元数据,然后再连接Registry获取实际的Image文件。由于Docker Hub的Index节点和Regsitry都部署国外,国内用户访问,经常遭遇连接超时或中断的情况,下载速度也极其缓慢。在启用了Mirror之后,访问流程如下:

    • 客户端的Docker Daemon连接Index获取Metadata,这一部分的数据量极小,直连国外的速度可以忍受
    • 根据Metadata的信息,Docker Daemon与Mirror服务器建立连接。如果pull的Image在Mirror上已经有缓存,就直接在Mirror上返回地址并下载
    • 如果Image在Mirror并无缓存,Mirror会与Docker Hub Registry建立连接,下载Image,提供给用户的同时,在本地缓存
    • Mirror下载Docker Hub Image采用stream的方式,即可以一边下载,一边提供给客户端的Docker Daemon,不必等Image完全下载完

    通过以上的描述,可以发现,对于常用的Image,Mirror缓存命中率会非常高,如Ubuntu等基础Image,这会极大提高下载速度。同时,Docker Image采用分层的结构,即使Image被更新,也只是下载最新一层非常少的增量数据。

    Mirror服务亦可以通过网络优化,加速对远端Docker Hub Registry的访问速度,如采用高速的商业VPN建立从Mirror到Docker Hub Registry的访问。通过七牛等云存储和CDN分发网络,会进一步提高国内客户端的下载速度。

    Mirror服务云端部署架构

    下图是DaoCloud在搭建Mirror服务时,采用的架构。

    我们选择了UCloud和七牛云存储。这样的架构是基于以下的几个考虑

    • 我们的Mirror服务主节点位于UCloud北京BGP机房。BGP机房网络上行下行的速度都非常快,有助于获得稳定高速的对外访问带宽,在Docker Hub Regsitry下载Image,获得不错的速度。
    • 我们扩展了Mirror的Registry Disk Driver,使它可以支持UCloud的UDisk服务。
    • BGP机房的云主机需要绑定外网IP,并且是根据带宽收费。提供类似Image下载服务,开销巨大。因此我们把下载缓存完成后的静态Image文件,定期同步到七牛云,既降低了带宽成本,同时也享受到了CDN的加速。我们通过代码检测需要下载的Image Layer是否在七牛有保存,如果有,就把访问重定向到七牛的URL,如果没有,就从UCloud的UDisk 直接下载。代码如下:

    Mirror服务线上数据统计

    Mirror服务上线至今,我们已经积累了数以千计的注册用户,在UDisk和七牛使用了超过100个GB的Image缓存,每月的下载API调用达到了3-4万次,网络流量峰值曾突破10个GB,平均下载速度超过了1MBps,下载速度峰值曾经达到过8MBps。下图是我们在七牛控制台的统计数据截图:

    写在最后

    作为Docker技术的坚决拥护者,我们深刻理解Docker Hub对每一个程序员的重要性,也不遗余力解决国内网络访问的速度问题。

    DaoCloud将坚持提供Docker Hub Mirror服务,我们承诺永久免费

    借此文,也感谢[UCloud](www.ucloud.cn/)和[七牛云存储](http://www.qiniu.com/),感谢他们在Mirror服务搭建和运维过程中为DaoCloud提供的支持和帮助。

    还没体验过Mirror服务?赶紧注册:https://www.daocloud.io/account/signup


    第 1 条附言  ·  2015-04-12 11:47:44 +08:00
    注册地址升级为:https://account.daocloud.io/signup
    34 条回复    2016-01-06 18:12:31 +08:00
    icloudnet
        1
    icloudnet  
       2015-03-19 16:43:04 +08:00   ❤️ 1
    年初才接触到docker,一直在寻找这样的技术,自09年接触aws,然后openstack,cloudstack,一直都不是很满意。
    今年才遇到了docker,真是相逢恨晚,准备用docker来做下个项目。
    上个月还想自己搭建个mirror,没想到daocloud已经做了很长时间了。
    顶!
    daocloud
        2
    daocloud  
    OP
       2015-03-19 16:45:55 +08:00   ❤️ 1
    @icloudnet 我们很快会推出以Docker为核心的开发部署工具,请关注我们的官网 www.daocloud.io
    Yamade
        3
    Yamade  
       2015-03-19 17:20:09 +08:00
    意识是安装discourse这样的开源程序就可以用DaoCloud的镜像是么?discourse docker 安装各种 在国内基本被墙的厉害
    zealic
        4
    zealic  
       2015-03-19 17:25:30 +08:00
    支持~
    daocloud
        5
    daocloud  
    OP
       2015-03-19 19:21:33 +08:00   ❤️ 1
    loading
        6
    loading  
       2015-03-19 19:24:31 +08:00
    喜闻乐见
    MaiCong
        7
    MaiCong  
       2015-03-19 19:53:02 +08:00 via iPhone
    永久是多久?
    longquanwo
        8
    longquanwo  
       2015-03-19 19:59:11 +08:00
    免费的就是最贵的
    yakczh
        9
    yakczh  
       2015-03-26 11:42:44 +08:00
    有用过七牛云存储的吗?
    kiritoalex
        10
    kiritoalex  
       2015-04-05 09:18:53 +08:00 via iPhone
    我擦,强烈支持
    ledzep2
        11
    ledzep2  
       2015-04-05 10:52:24 +08:00
    感谢
    zsj950618
        12
    zsj950618  
       2015-04-05 18:57:44 +08:00   ❤️ 1
    是不是没有办法给index做镜像?
    gDD
        13
    gDD  
       2015-04-08 17:18:53 +08:00   ❤️ 1
    坑爹货,首先不是公开服务,要注册,注册以后连自己的账号密码邮箱各种信息通通改不了,系统不完善还敢拿出来卖。

    Mirror 使用有独立 IP 数、流量、请求各种限制,基本就是创业公司骗注册用户数的,用不用你懂的。
    daocloud
        14
    daocloud  
    OP
       2015-04-11 13:29:59 +08:00
    @gDD 同学,感谢您的回复和反馈。

    您提到的问题我跟您解释一下:

    1. 账号和邮箱是注册用户的唯一标示,通常都不需要修改,重置密码会通过邮件方式进行,您可能需要查一下您的邮箱。如果邮箱供应商屏蔽了我们的发信方,您可以通过support.daocloud.io提工单,我们会手工帮您重置密码。

    2. 独立IP、流量等非硬性限制,仅仅是给用户自己一个使用量的统计反馈,目前每个月20GB的流量,docker的分层image方式,基础镜像不需要重新下载,至今还没有个人用户超越这20GB的限制,绝大多数小伙伴表示够用够快。

    3. 创业团队起步艰难,尤其是在国内这样的网路环境下。我们一开始投入做免费服务(由于使用了付费的CDN加速,mirror服务每月的成本非常高),初衷也是为了方便国内开发者,造福社区,同时积累用户,还望您理解支持。
    daocloud
        15
    daocloud  
    OP
       2015-04-11 13:30:30 +08:00
    @zsj950618 是的,index无法镜像的,index只是传输metadata,流量较小。
    Khlieb
        16
    Khlieb  
       2015-04-11 15:47:09 +08:00 via Android
    @longquanwo 也有可能是无价的
    jamlee
        17
    jamlee  
       2015-04-11 17:21:13 +08:00
    @icloudnet 我是docker粉丝 你还在搞吗
    cobola
        18
    cobola  
       2015-04-11 18:22:33 +08:00   ❤️ 1
    ![]( )
    icloudnet
        19
    icloudnet  
       2015-04-11 21:18:48 +08:00
    @jamlee 一直在做开发和测试,不过现在又加了个openvz。。。。
    fwee
        20
    fwee  
       2015-04-11 21:22:34 +08:00
    cool!拯救墙内dockerer
    zsj950618
        21
    zsj950618  
       2015-04-11 22:17:05 +08:00
    @daocloud 但貌似index在国内有被墙迹象,要是能有国内加速方案就好了。
    bfti
        22
    bfti  
       2015-04-11 22:22:05 +08:00
    免费了吃啥?
    jamlee
        23
    jamlee  
       2015-04-12 11:04:29 +08:00
    @icloudnet docker里面开发你用的还顺手不,每当我想做些特殊的操作的时候,比如tcpdump和strace总会在权限这块遇到坑
    daocloud
        24
    daocloud  
    OP
       2015-04-12 11:48:50 +08:00
    @cobola https://account.daocloud.io/signup 注册地址升级后变为,原文链接还是去年第一版时的,抱歉。
    daocloud
        25
    daocloud  
    OP
       2015-04-12 11:50:39 +08:00
    @zsj950618 这部分受限于docker官方的机制,还必须到其站点获得。这部分功能我们已经在开放内测,有兴趣可以申请使用。
    mengzhuo
        26
    mengzhuo  
       2015-04-12 12:41:16 +08:00
    @bfti

    其实官方也只有私有项目才收费
    DaoCloud正在烧钱圈地呢~
    yushiro
        27
    yushiro  
       2015-04-15 22:56:19 +08:00
    你们家的密码不允许32位, 这是啥原因啊? 貌似不应该!!
    daocloud
        28
    daocloud  
    OP
       2015-04-16 11:09:24 +08:00
    @yushiro 我向工程团队反馈,谢谢
    breestealth
        29
    breestealth  
       2015-04-17 23:48:01 +08:00
    @daocloud
    为啥现在流量变成了10G?新手刚刚接触,使用量较大啊。
    tony1016
        30
    tony1016  
       2015-04-29 09:25:45 +08:00   ❤️ 1
    用ubuntu镜像跑个shadowsocks翻墙怎么样??
    whimsySun
        31
    whimsySun  
       2015-04-29 10:15:39 +08:00
    已经用了一个月了,非常接地气的服务
    adaibee
        32
    adaibee  
       2015-04-29 11:38:40 +08:00
    beef9999
        33
    beef9999  
       2015-04-30 22:43:51 +08:00
    你们开发也是python吗?
    yakiang
        34
    yakiang  
       2016-01-06 18:12:31 +08:00
    点击加速后哪里获取自己的专属 mirror 链接呀?迟迟找不到!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2789 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:54 · PVG 20:54 · LAX 04:54 · JFK 07:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.