【问题标题】:Can you generate and apply patches to a docker container offline?您可以离线生成补丁并将其应用于 docker 容器吗?
【发布时间】:2014-09-06 10:45:38
【问题描述】:

我们正在考虑用 docker 替换我们的更新系统,但我们有一个独特的限制,即所有升级都需要离线进行。该用例与您从未连接到 Internet 的 LAN 更新路由器固件或其他内容的方式非常相似。

目前,我们的用户下载一个补丁文件,然后他们通过专用 LAN 将其上传到我们系统的 Web 界面。我们的系统应用了补丁。这一切都是通过diffpatch 命令实现的。我们进行差异化是因为我们的代码库非常庞大,但相对较少的文件会随着版本的变化而变化。

我们认为切换到 docker 可以极大地帮助我们的开发,但对于生产和我们的更新系统,我们需要确保我们可以进行离线、基于差异的更新。

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

我知道 docker 有类似 docker diff 的命令,但根据 documentation 它只显示从容器中添加、删除或更改的文件列表。 docker savedocker export 虽然看起来很接近,但它们提供了完整的图像,而我正在寻找差异。同样,据我所知,似乎没有办法使用docker load 来加载差异。

谢谢!

【问题讨论】:

  • 你找到解决办法了吗?

标签: diff patch docker


【解决方案1】:

恕我直言,您应该为此使用私有注册表。 Docker 映像可以包含许多层,因此您的更新将只是用户需要下载的小层。此外,在本地系统上更新映像不会影响正在运行的容器,因此您的用户只需在更新时下载新层,然后从新映像重新启动正在运行的容器。这将与补丁系统几乎相同。所以简而言之,从用户方面来看,它看起来像这样:

  1. docker 从您的私有注册表实例中拉取新层(需要在线)
  2. docker 停止旧容器(离线)
  3. docker 从更新的镜像运行新容器

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多