V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qping
V2EX  ›  Docker

docker 如何导出某个镜像增量部分?

  •  
  •   qping · 2020-04-20 12:52:49 +08:00 · 5884 次点击
    这是一个创建于 1697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    离线生产环境下需要 docker save 镜像,然后 dock load 导入。

    我的问题是 docker save 导出的是个完整的镜像,当有变动时,每次都传输完整镜像特别浪费时间,在现场环境执行 load 时可以看出来 docker 只会导入变动的 layer

    有没有什么工具可以根据 tag 导出 docker 增量部分?

    第 1 条附言  ·  2020-05-21 22:13:27 +08:00

    有人收藏了,分享下最后的解决方法是用了一个python脚本。

    比较两个tag的镜像,只导出不同的layer,最后docker load 可以导入过去。 使用方法:

     python diff.py -o 镜像名:旧tag  -n 镜像名:新tag
    

    diff.py 代码在这里: https://gist.github.com/qpingcode/ffdd42e7eb3617ba88597f86b2c2cfa7

    7 条回复    2020-04-21 09:24:03 +08:00
    jakezh
        1
    jakezh  
       2020-04-20 13:39:19 +08:00 via iPhone
    diff 生产 patch 然后服务器 apply patch
    不过正常思路是上传到 hub
    ETiV
        2
    ETiV  
       2020-04-20 13:42:29 +08:00 via iPhone
    为什么不自建个私有 repository
    qping
        3
    qping  
    OP
       2020-04-20 14:22:41 +08:00
    @jakezh #1 @ETiV #2 私服 registry 是搭了的,但是生产环境是断网的,没有外网
    qping
        4
    qping  
    OP
       2020-04-20 14:28:55 +08:00
    @jakezh #1 你是说 git 的 diff 然后生成 patch 吗,docker 没有找到相关的命令。。
    ETiV
        5
    ETiV  
       2020-04-20 15:17:05 +08:00 via iPhone
    自建机房吗?可能没招

    我们在用阿里云。他们的托管式镜像服务,都可以公网推、内网拉
    jakezh
        6
    jakezh  
       2020-04-20 17:24:48 +08:00 via iPhone   ❤️ 1
    @qping 你把 tar 文件打开 看看里面的 layer 那个文件夹就明白了
    diff -urN 然后 patch -pX
    qping
        7
    qping  
    OP
       2020-04-21 09:24:03 +08:00
    @jakezh #6 谢谢老哥,大概知道怎么弄了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.