2

我正在使用docker-compose在本地(脱机网络)上运行多容器软件。在没有直接连接到Docker注册表的情况下提供软件更新的最佳方式是什么?使用Docker交付软件更新

我试过2个选项(两者都不够): 1.提供使用docker save创建的完整Docker镜像。非常低效 - 每张图片高于1GB,没有图层优化。 2.除Docker镜像之外还提供定制软件,并将其映射到通用容器内的主机卷。通过这种方式,我可以提供仅定制软件更新,并缩短需要更新Docker映像时的时间。但它远非最佳。

有没有什么方法可以只提供更新的Docker图层作为文件的自定义软件?任何其他想法?

感谢, 梅厄

+0

避免关于图像的卡住,而是获取包含Dockerfile的github存储库并在本地执行docker build –

+0

@ScottStensland不做的原因是要么你不会在服务器上拥有相同的构建和测试环境,要么你不能将建设责任推给系统管理员。此外,它会匆匆'apt'镜像等等...... – hurturk

+0

让你自己在ovh.com上每月$ 6美元的Ubuntu VPS服务器,并从该远程服务器执行所有你的Docker交互......然后巨大的Docker镜像是一个简单的...它的救星和FAR更好地比无论您的家庭ISP有多快(无需家庭ISP可以击败服务器的带宽),都可以从笔记本电脑发出Docker拉和推cmds ...还给您带来了BEAST花生一个月的服务器...不需要一个健壮的笔记本电脑; [ –

回答

2

您有几种选择:

  • 设置专用网络内的私有注册,并让服务器使用
  • 利用洪流协议进行得更快了,看到Docket项目
  • 如果没有,请使用--rsyncable选项gzip保存并使用rsync而不是scp
  • 使用docker-slim减少您的最终图像尺寸

我希望上面的几种方法的组合就足够好了。

+0

不幸的是(如前所述),我谈论离线网络,而不是私有云,因此所有在线工具(torrent/rsync)将没有帮助。设置私人注册表也无济于事。我没有意识到docker-slim - 会检查出来,但如果有一个选项以某种方式升级现有的图像与新层 - 这将是一个更好的选择.... – Miro

+0

嗨米罗,我真的意味着离线方法以及上述所有项目的专用网络。对于例如私人登记你不需要互联网连接,你可以在本地机器上设置它,而其他人可以在同一本地网络中拥有该机器的IP地址。我在回答中更新了“云”关键字以防止混淆。 – hurturk

+0

对于私人注册表(实际上我使用其中一种) - 我仍然需要在离线网络内部播放完整图像并将它们推入。因此,如果每个图像使用一个容器(或少量容器),则它是不合理的基础结构努力,这并不能解决问题。我的努力是提供一种方法,在本地持续不断地进行软件更新。 – Miro