Docker Registry V1 到 V2,灵雀云实时同步迁移实践

本文探讨Docker Registry从V1到V2的转变,强调V2在安全性和性能上的改进,并分享灵雀云如何在生产环境中实现V1和V2镜像的实时同步迁移,以及如何利用同步系统同步docker hub镜像。
摘要由CSDN通过智能技术生成
                                                                                                     

今年四月份,随着 Docker registry 2.0 版本的发布,之前 Python 版本实现的 registry 正式被标记为 ‘deprecated’。V2 版本用 go 实现,在安全性和性能上做了诸多优化,并重新设计了镜像的存储的格式,带来了翻天覆地的变化。


本文将详细解读 V2 和 V1 的区别,并介绍灵雀云在生产环境同时支持 V1 和 V2 的镜像同步迁移实践,以及利用该同步系统对 docker hub 镜像实现实时同步的方法。


背景

Registry 作为 Docker 的核心组件之一负责镜像内容的存储与分发,客户端的 docker pull 以及 push 命令都将直接与 registry 进行交互。


  • 最初版本的 registry 由 Python实现。由于设计初期在安全性,性能以及 API 的设计上有着诸多的缺陷,该版本在 0.9 之后停止了开发,新的项目 distribution 来重新设计并开发下一代 registry。

  • 新的项目由 go 语言开发,所有的 API,底层存储方式,系统架构都进行了全面的重新设计已解决上一代 registry 中存在的问题。四月份 rgistry 2.0 正式发布,docker 1.6 版本开始支持 registry 2.0, 八月份随着 docker 1.8 发布,docker hub 正式启用 2.1 版本 registry 全面替代之前版本 registry。


新版 registry 对镜像存储格式进行了重新设计,并和旧版不兼容,docker 1.5 和之前的版本无法读取 2.0 的镜像。同时旧版本的 registry 中已有大量的镜像需要迁移到新版本 registry 中。


灵雀云平台的客户可能会使用各个版本的 docker,也可能升级或者降级使用的版本。为了让 registry 的版本对用户透明,灵雀云在同一域名提供两套服务的基础上,在后台对镜像实现了新版和旧版的双向实时同步,以保证用户在切换客户端版本时不会出现 pull 镜像失败的情况。在此基础上,灵雀云实现了对 docker hub 中官方 library 镜像到灵雀云平台的实时同步,通过灵雀云的国内镜像社区来为国内用户提供快速的镜像下载服务。


Registry V2 的变化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值