8

我有两台主机,每台都安装了 docker。

众所周知,每个 docker 都将图像存储在本地/var/lib/docker目录中。

所以如果我想使用一些图像,例如ubuntu,我必须docker pull在每个主机上执行从互联网下载。

我认为它很慢。

我可以将图像存储在共享磁盘阵列中吗?然后让一些主机拉一次镜像,允许每个可以访问共享磁盘的主机直接使用镜像。

这是可能的还是好的做法?为什么docker不是这样设计的?

它可能需要破解 docker 的源代码来实现这一点。

4

3 回答 3

0

2016.1.25 更新 docker 镜像功能已弃用

因此这个答案现在不适用,留作参考

旧信息

您需要的是 docker 注册表的镜像模式,请参阅https://docs.docker.com/v1.6/articles/registry_mirror/

它直接支持docker-registry

当然,您可以在本地使用公共镜像服务。

于 2015-01-08T01:56:53.977 回答
0

你看过这篇文章吗

Dockerizing 一个 Apt-Cacher-ng 服务

http://docs.docker.com/examples/apt-cacher-ng/

提炼

这个容器使任何包的第二次下载几乎是即时的。

至少一个节点会很快,我认为应该可以告诉第二个节点使用第一个节点的缓存。

编辑:您可以运行自己的注册表,命令类似于

sudo docker run -p 5000:5000 registry

https://github.com/docker/docker-registry

于 2015-01-06T08:56:53.840 回答
0

您正在尝试做的事情不应该像cpuguy83在这个github/docker 问题上所解释的那样工作。

的确:

底层存储驱动程序需要同步访问。

分享/var/lib/docker远远不够,而且行不通

根据doc.docker.com/registry

如果您想:您应该使用注册表:

  • 严格控制图像的存储位置
  • 完全拥有您的图像分发管道
  • 将图像存储和分发紧密集成到您的内部开发工作流程中

所以我想这是解决这个问题的(/你的)最佳选择(但我想你已经得到了那个信息——我只是在这里添加它来更新细节)。

祝你好运!

于 2016-01-26T10:29:19.517 回答