docker工人 – 我们如何才能导出/导入(或保存/加载)只有新的变化?

我是新来的docker工人,任何一个帮助下面的查询

  1. 服务器有一个像1GB的docker图像Image:ver1 [此图像存储在服务器中的.tar文件]
  2. 在Ubuntu的PC donwloaded tar图像forms的服务器,并加载/导入使用Docker的图像[Image:ver1]
  3. 在Serever上有一个新的Image:ver2,大小仍然是1GB,但与ver1的差别只有10MB。

问题1:如果可以从服务器“导入/载入”新的图像[Image:ver2],我们如何才能导出/导入(或保存/加载)新的更改[即10MB]?

问题2:如果我们能够将上面的变化应用于现有图像[即:图像:Ver1],那么要做什么?

Docker是一个基于文件的系统,对于每个Pull请求,它只会提取被更改的文件。 例如,假设您在泊坞窗镜像中的文件中有1 GB的数据。 现在,你添加了500MB的数据。 然后,在docker pull的情况下,它只会拉动更改,即两个文件之间的Delta部分。 所以,你是安全的,它不会分开所有的东西。

尽pipe在制作DockerFile或docker conf文件时,应该非常小心,因为Docker文件中的所有行均作为图层存储在系统中。 如果你在你的Docker文件中有10层,并且你正在改变第5层,那么第5层之后的所有层将被再次拉动。 这是使用Docker的唯一方法。 rest一下,它总会拉动每个拉动请求的变化量的增量。

如果要保存/加载泊坞窗图像的tar文件,则不能导出部分图像。 您可以发送完整的图像,将您的数据移动到未以此方式传输的外部卷上,也可以使用dockerregistry。

后者是相对容易实现,docker包括一个图像 ,您可以运行您自己的私人registry。 推送到dockerregistry将只发送更改的图层,因此您可以利用图层caching和构build您的Docker文件,以最大限度地减less更改的图层数量。