V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
qping
V2EX  ›  Docker

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

  •  
  •   qping · Apr 20, 2020 · 6405 views
    This topic created in 2203 days ago, the information mentioned may be changed or developed.

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

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

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

    Supplement 1  ·  May 21, 2020

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

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

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

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

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

    我们在用阿里云。他们的托管式镜像服务,都可以公网推、内网拉
    jakezh
        6
    jakezh  
       Apr 20, 2020 via iPhone   ❤️ 1
    @qping 你把 tar 文件打开 看看里面的 layer 那个文件夹就明白了
    diff -urN 然后 patch -pX
    qping
        7
    qping  
    OP
       Apr 21, 2020
    @jakezh #6 谢谢老哥,大概知道怎么弄了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2579 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 07:02 · PVG 15:02 · LAX 00:02 · JFK 03:02
    ♥ Do have faith in what you're doing.