你可以生成和离线应用补丁docker容器?

我们正在考虑用dockerreplace我们的更新系统,但我们有一个独特的限制,所有的升级都需要离线进行。 这个用例非常类似于如何更新路由器固件,或者从没有连接到互联网的局域网中更新。

目前我们的用户下载一个补丁文件,然后通过专用局域网上传到我们系统的networking界面。 我们的系统应用这个补丁。 这全部通过diffpatch命令来实现。 我们做差异,因为我们的代码库是相当巨大的,但相对较less的文件从版本更改。

我们认为转换到docker可以帮助我们的发展,但是对于生产和我们的更新系统,我们需要确保我们可以做离线,基于差异的更新。

我的问题归结为:是否有docker类似于可用于离线更新容器的diffpatch命令?

我知道docker有像docker diff命令,但根据文件,它只是显示已添加,删除或从容器更改文件的列表。 docker savedocker export看起来像他们虽然接近,但他们提供完整的图像,而我后差异。 同样,似乎没有办法,据我可以告诉使用docker load加载差异。

谢谢!

恕我直言,你应该使用私人registry。 Docker镜像可以包含很多图层,因此您的更新将只是小图层用户需要下载的。 此外,更新本地系统上的映像不会影响正在运行的容器,因此用户只需在更新时下载新的映像,然后从新映像重新启动运行的容器。 这与补丁系统几乎相同。 所以简而言之,从用户angular度来看,就像这样:

  1. docker工人从你的私人registry实例中拉出新的图层(需要在线)
  2. docker停止旧容器(离线)
  3. docker工人从更新的图像运行新的容器

所有的configuration文件应该存储在镜像之外,例如在docker卷中。