V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nancheng911
V2EX  ›  问与答

docker 打包的问题请教一下

  •  
  •   nancheng911 · 171 天前 · 645 次点击
    这是一个创建于 171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一下,最近想把自己使用的 docker 部署到另一台机器上使用docker save >保存了镜像一开有 30g 。网上搜了一些解决方法,最后用docker images 查看还是和之前打包的大小一样,但是这次确定删除了很多不用的安装包之类,不知道为什么大小没有改变。

    7 条回复    2020-10-31 17:03:37 +08:00
    Fantaoranges
        1
    Fantaoranges   171 天前
    没说镜像里装的啥环境不好判断,Dockerfile 最好用最精简的镜像来 build
    BraveRBT
        2
    BraveRBT   171 天前
    docker save 会保存所有差异叠加层,用 docker export 导出再导入即可合并这些叠加层.
    空间就会得到释放了(会丢失所有的 layer 信息).

    save 和 export 的差别如下:
    export: Stream the contents of a container as a tar archive.
    save: Save an image to a tar archive.
    jtwor
        3
    jtwor   171 天前
    发配置看看
    nancheng911
        4
    nancheng911   171 天前
    @Fantaoranges 装了几个版本的深度学习环境,都比较大

    @BraveRBT 多谢我查查看 export

    @jtwor docker 新手不知道具体配置指的是什么,怎么查看
    BraveRBT
        5
    BraveRBT   171 天前
    @nancheng911 #4 记得 export 导出的 tar 需要用 import 导入.
    killva4624
        6
    killva4624   170 天前
    > 删除了很多不用的安装包之类

    这个是在哪里删的? Dockerfile 里吗?

    不知道你的 images 是怎么创建的,个人常用的话有两种方式;
    - 根据 Dockerfile build (参见 docker build )。这种情况下要精简的话,尽量减少层,把命令都写在一个层里,如果要清理的话,也要在同一个命令层里清理(比如第二层安装 xxx,第三层再 rm xxx,这种情况下不会减少体积)。
    - docker run 之后,exec 到容器里操作,再 docker commit 。这种情况维护性极差,不想展开讨论。

    另外更换基础镜像(如 alpine\slim ) ,多阶段构建也是减少镜像体积的好办法。
    nancheng911
        7
    nancheng911   169 天前
    @killva4624 export 回导致部分内容丢失,情况确实就是楼下不想讨论那种。。。
    @BraveRBT 就是你说的不想讨论那种,目前看起来只能重新做一个了。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3429 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:14 · PVG 16:14 · LAX 01:14 · JFK 04:14
    ♥ Do have faith in what you're doing.