nancheng911
V2EX  ›  问与答

docker 打包的问题请教一下

  •  
  •   nancheng911 · Oct 30, 2020 · 2242 views
    This topic created in 2066 days ago, the information mentioned may be changed or developed.

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

    7 replies    2020-10-31 17:03:37 +08:00
    Fantaoranges
        1
    Fantaoranges  
       Oct 30, 2020
    没说镜像里装的啥环境不好判断,Dockerfile 最好用最精简的镜像来 build
    BraveRBT
        2
    BraveRBT  
       Oct 30, 2020
    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  
       Oct 30, 2020
    发配置看看
    nancheng911
        4
    nancheng911  
    OP
       Oct 30, 2020
    @Fantaoranges 装了几个版本的深度学习环境,都比较大

    @BraveRBT 多谢我查查看 export

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

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

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

    另外更换基础镜像(如 alpine\slim ) ,多阶段构建也是减少镜像体积的好办法。
    nancheng911
        7
    nancheng911  
    OP
       Oct 31, 2020
    @killva4624 export 回导致部分内容丢失,情况确实就是楼下不想讨论那种。。。
    @BraveRBT 就是你说的不想讨论那种,目前看起来只能重新做一个了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2916 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:20 · PVG 12:20 · LAX 21:20 · JFK 00:20
    ♥ Do have faith in what you're doing.