你可以生成和离线应用补丁docker容器?
我们正在考虑用dockerreplace我们的更新系统,但我们有一个独特的限制,所有的升级都需要离线进行。 这个用例非常类似于如何更新路由器固件,或者从没有连接到互联网的局域网中更新。
目前我们的用户下载一个补丁文件,然后通过专用局域网上传到我们系统的networking界面。 我们的系统应用这个补丁。 这全部通过diff
和patch
命令来实现。 我们做差异,因为我们的代码库是相当巨大的,但相对较less的文件从版本更改。
我们认为转换到docker可以帮助我们的发展,但是对于生产和我们的更新系统,我们需要确保我们可以做离线,基于差异的更新。
我的问题归结为:是否有docker类似于可用于离线更新容器的diff
和patch
命令?
我知道docker有像docker diff
命令,但根据文件,它只是显示已添加,删除或从容器更改文件的列表。 docker save
和docker export
看起来像他们虽然接近,但他们提供完整的图像,而我后差异。 同样,似乎没有办法,据我可以告诉使用docker load
加载差异。
谢谢!
恕我直言,你应该使用私人registry。 Docker镜像可以包含很多图层,因此您的更新将只是小图层用户需要下载的。 此外,更新本地系统上的映像不会影响正在运行的容器,因此用户只需在更新时下载新的映像,然后从新映像重新启动运行的容器。 这与补丁系统几乎相同。 所以简而言之,从用户angular度来看,就像这样:
- docker工人从你的私人registry实例中拉出新的图层(需要在线)
- docker停止旧容器(离线)
- docker工人从更新的图像运行新的容器
所有的configuration文件应该存储在镜像之外,例如在docker卷中。