有没有一个聪明的方法来做到这一点与Docker(也许通过保存/加载/差异)?

我有大量的电脑可以运行代码。 但是,我只能在“会话”中这样做,在这个会话中没有文件系统持久性。 我至less有这些会话之外的能力上传文件到这些主机,这是坚持下去的。 基本上,这些计算机没有下载自己的支持,但我可以select明确地发送文件。

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

现在,在这些电脑上运行各种docker图像。 如果我docker pull一些形象,它将在下一届会议去。 我想到,我可以在docker save一个图像在我的电脑上,把它上传到他们(所以它坚持),然后在每个会议开始时,他们可以docker load 。 在实践中,我发送给他们debian:喘息,因为他们需要的大多数其他图像都是基于这个的,因此即使每个会话仍然在重复下载,至less它只能在debian的顶部发生变化:wheezy。

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

有没有办法发送他们俗气,而不重新发送与wheezy相关的数据?

docker保存没有能力复制部分图像在这个时候。 保存和加载的最初devise目标是传输图像及其在空中系统之间的所有依赖关系。 (来源:我是保存和加载的初始作者)

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

相反,你应该考虑运行一个私人dockerregistry。 你可以发布myorg:cheesy,并让docker pull和docker推出所有的依赖关系。 这也将降低您的整体带宽使用,因为只有你没有的层将被传输。 从长远来看,pipe理起来也会容易得多。

要运行您自己的私人registry,您应该查看https://github.com/docker/distribution这是一个开放源代码的私人回购。 如果您需要开发人员的帮助,您可以跳上freenode的#docker-distribution。