搭建存储在Windows下的Docker Registry

前言

在VMware的虚拟机中搭建Docker Registry预计需要很大的存储空间,我一直想将Registry的存储放到Windows下,就不用担心之后虚拟机扩容的问题了。我想一定有很多使用Windows系统的开发者想要这样做,我尝试了以下几种方式,并做了一些设想,希望有更好的解决方案,能告知我,感谢。

  • 方案1,通过Linux虚拟机运行Registry V2镜像,通过VMWare的VMWare Tools,设置共享目录的方式,将volume的存储指向Windows下

本以为这是很好的方案,但在实际执行中,但是不清楚是VMWare Tools的问题,还是Docker Registry的问题。一旦Docker容器的volume挂载到/hgfs/mnt/myregistry就会导致共享存储失效

这个方案有两点补救:

  • 修改Docker Registry源码,修正这个问题。得看源码改源码。
  • 挂载在内部,同步到Windows存储,有需要再恢复回来。显然很繁琐。
  • 方案2,在Windows下搭建Docker Registry,运行它,不依托容器环境启动。

题外话Docker Registry v1是Python写的,后来用Go重新实现Docker Registry v2,依赖Git下载,Go环境编译。

我找到了Registry Lab。运行

生成的独立可运行的二进制文件registry.exe。Registry Lab是在这之上又进行了包装,改造成Windows上的Docker Registry镜像。我希望配置其独立运行,毕竟Registry的访问是通过REST API访问的,理论上还是可行的。

文档不够丰富,配置样例文件,我仅做了简单的摸索,设置文件存储到Windows下的Z盘。

虚拟机指定该私有仓库,在使用中,REST API并没有预想中正常工作。

这个方案有两点补救:

  • 研读Registry代码,调试找到问题原因。得看源码改源码。
  • 由于Docker Registry HTTP API V2是公开的,可以参照官方代码,可以自己实现一个独立在Windows上运行的Registry,想来也是几千Star的。
  • 方案3,使用Docker for Windows,运行Docker Registry镜像,该方案整合了方案1、2。

我最后才试了这个方法,一是任务Docker for Windows目前兼容性不够好,二是之前尝试,发现要启动Hyper-V虚拟化,不能和VMware并存。这就违背我的初衷了。

但是随着深入,我发现,Docker for Windows可以不使用Hyper-V虚拟化,有采用VMware WorkStation驱动的,也有采用Virtual Box驱动的 Docker Toolbox。Docker Toolbox没有去尝试,参考Docker for Windows 使用 VMware WorkStation是成功了的,并参考Create a private local docker registryx509: cannot validate certificate because of not containing any IP SANs中密钥等配置,搭建存储在Windows下的Docker Registry成功。

这个方案也是本文介绍的内容。

这篇博客分为两部分,介绍了使用VMware WorkStation安装Docker for Windows,搭建存储在Windows下的Docker Registry。

发布者

Jiaheng Tao

挖掘概念,创造工具

《搭建存储在Windows下的Docker Registry》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据