DaoCloud 宣布 Docker Hub Mirror 服务永久免费 - V2EX
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 11703 次点击
    这是一个创建于 3940 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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     Solana     771 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 21:13 PVG 05:13 LAX 13:13 JFK 16:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86