有没有一种聪明的方法可以让Docker做到这一点(可能是通过save/load/diff)?

有没有一种聪明的方法可以让Docker做到这一点(可能是通过save/load/diff)?,docker,Docker,我有很多计算机可以运行代码。但是,我只能在“会话”中这样做,会话之间没有文件系统持久性。我至少有能力在这些会话之外将文件上传到这些主机,而且这种能力确实存在。基本上,这些计算机不会自行下载任何东西,但我可以选择显式地向它们发送文件 带宽是这些计算机上的一大商品 现在,我在这些计算机上运行各种docker图像。如果我docker拉一些图像,它将在下一个会话中消失。我发现我可以docker在我的电脑上保存一个图像,上传给他们(这样图像就会粘在一起),然后在每次会话开始时,他们就可以docker加载。

我有很多计算机可以运行代码。但是,我只能在“会话”中这样做,会话之间没有文件系统持久性。我至少有能力在这些会话之外将文件上传到这些主机,而且这种能力确实存在。基本上,这些计算机不会自行下载任何东西,但我可以选择显式地向它们发送文件

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

现在,我在这些计算机上运行各种docker图像。如果我
docker拉一些图像,它将在下一个会话中消失。我发现我可以
docker在我的电脑上保存一个图像,上传给他们(这样图像就会粘在一起),然后在每次会话开始时,他们就可以
docker加载
。实际上,我给他们发的是debian:wheezy,因为他们需要的大多数其他图像都是基于此的,因此,即使每次会话都会重复下载,至少这只是debian:wheezy上的更改

我的问题如下。假设我将基础debian:wheezy更改为我们可以称之为debian:cheesy的东西(不是直接交换,例如wheezy在cheesy的图像树中),这会显著增加其大小。另外,我未来的所有图片都将基于cheesy,所以我现在想把cheesy上传到我的电脑上


有没有一种方法可以在不重新发送与喘息相关的数据的情况下发送它们?Docker save此时无法复制部分图像。save和load最初的设计目标是在气隙系统之间传输图像及其所有依赖关系。(来源:我是《保存和加载》的第一作者)

问题是,虽然您可能有debian:wheezy,但如何确保每个系统之间有相同的debian:wheezy?成功保存和加载的唯一可靠方法是序列化整个树

相反,您应该考虑运行一个私人码头工人注册表。您可以发布myorg:cheesy并让docker pull和docker push解决所有依赖项。这也将降低您的总体带宽使用率,因为只有您尚未拥有的层将被传输。从长远来看,这也会让你更容易管理


要运行您自己的私有注册表,您应该检查哪一个是开源私有回购。如果需要开发者的帮助,您可以使用freenode的#docker发行版。

谢谢。我看到有人提到过运行一个私有注册表来搜索答案,但我不知道它是如何工作的。你是说在本地运行私有注册表,并让我的其他计算机从中提取数据吗?如果是这样的话,我看不出这会如何改变任何东西,甚至在会话期间从这个私有注册表中提取的任何东西都会丢失。现在,如果你说的是使用我的上传功能定期向每个员工发送一份私有注册表副本,那么也许我知道你的意思,但需要进一步思考……顺便说一句,如果这似乎是人为的,也许我应该提到,这些是我正在谈论的BOINC客户端。是的,在那种环境下,你的选择非常有限。我的想法是,您可以在BOINC环境之外建立一个注册表,然后将它们拉进来。在初始BOINC更新时为最新图像设定种子(docker save是一个很好的选择),并设置注册表,以便docker pull将拉入更新。这样,您就不会引入不经常更改的debian或DEP,只有您的应用程序会更改。