有没有一种聪明的方法来使用Docker(可能通过save / load / diff)?

时间:2015-06-25 02:06:04

标签: docker

我有大量可以运行代码的计算机。但是,我只能在“会话”中执行此操作,在这些会话之间没有文件系统持久性。我至少具有在这些会话之外的能力将文件上传到这些主机,这确实存在。基本上,没有这些计算机下载自己,但我可以选择明确发送它们的文件。

带宽是这些计算机上的一大商品。

现在,在这些计算机上,我运行各种泊坞窗图像。如果我docker pull某个图像,它将在下一个会话中消失。我发现我可以在我的计算机上docker save一张图像,将其上传到它们(因此它会粘在一起),然后在每个会话开始时它们都可以docker load。在实践中,我发送给他们debian:wheezy,因为他们需要的大多数其他图像都是基于那个,因此即使每次会话仍然重复下载,至少它只是debian的变化:wheezy。

我的问题如下。假设我改变了基础debian:wheezy到我们可以称之为debian的东西:俗气(不是直接交换,这样的东西,在图像树中为了cheesy),并且这显着增加了它的大小。此外,我所有未来的图像现在都将基于俗气,所以我现在想要将俗气上传到我的电脑。

有没有办法让他们发送俗气而不会以某种方式重新发送与wheezy相关的数据?

1 个答案:

答案 0 :(得分:1)

Docker save目前无法复制部分图像。保存和加载的初始设计目标是在空中系统之间传输图像及其所有依赖关系。 (来源:我是保存和加载的最初作者)

问题是,虽然你可能有debian:wheezy,你怎么能确定你有相同的debian:每个系统之间的喘息声?成功保存和加载的唯一可靠方法是序列化整个树。

相反,您应该考虑运行私有docker注册表。你可以发布myorg:cheesy并让docker pull和docker push解决所有的依赖关系。这也会降低您的总体带宽使用率,因为只会传输您尚未拥有的图层。从长远来看,您也可以更轻松地进行管理。

要运行您自己的私人注册表,您应该查看https://github.com/docker/distribution这是一个开源私人存储库。如果您需要开发人员的帮助,您可以访问freenode的#docker-distribution。