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

Docker 镜像太太太大了。

  •  
  •   cheneydog · 2017-07-25 12:50:55 +08:00 · 13432 次点击
    这是一个创建于 2469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    dockerfile 方式创建太麻烦了。

    docker commit 方式创建的镜像太大了。

    大家都是怎么用的。我的镜像减肥后也上 G。
    28 条回复    2017-08-03 19:09:10 +08:00
    miniers
        1
    miniers  
       2017-07-25 12:58:53 +08:00   ❤️ 1
    😂黑盒镜像也就你自己用用,无所谓大小啦,想减肥只能 Dockerfile 并注意镜像层数,每层最后都需要清理无用文件
    linoder
        2
    linoder  
       2017-07-25 12:59:34 +08:00
    自建 repository
    linoder
        3
    linoder  
       2017-07-25 13:00:17 +08:00   ❤️ 1
    @linoder 然后推到 私有 registries
    DoraJDJ
        4
    DoraJDJ  
       2017-07-25 13:02:15 +08:00   ❤️ 1
    alpine linux 镜像或许可以拯救你
    Reficul
        5
    Reficul  
       2017-07-25 13:06:04 +08:00   ❤️ 3
    1. multistage build,最后只包括二进制
    2. 压缩命令压缩镜像
    3. 基础镜像用 alpine,golang 可以用 scratch
    Thoxvi
        6
    Thoxvi  
       2017-07-25 13:06:29 +08:00 via Android
    咦…还好吧?底层镜像会复用的,只是看起来大
    cheneydog
        7
    cheneydog  
    OP
       2017-07-25 13:06:33 +08:00
    @linoder 网络是个瓶颈
    cheneydog
        8
    cheneydog  
    OP
       2017-07-25 13:07:57 +08:00
    @miniers
    咋没有个镜像转 dockerfile 的方法
    其实我不想要记下每一层啊,docker 咋没个选项别搞增量记录。
    zhoulouzi
        9
    zhoulouzi  
       2017-07-25 13:10:05 +08:00   ❤️ 1
    cloverstd
        10
    cloverstd  
       2017-07-25 13:13:06 +08:00   ❤️ 1
    cheneydog
        11
    cheneydog  
    OP
       2017-07-25 13:13:08 +08:00
    @zhoulouzi 懒的写 dockerfile 呀
    miniers
        12
    miniers  
       2017-07-25 13:15:01 +08:00   ❤️ 1
    @cheneydog #8 这个真没有,只能自己写,真的不要把 docker 当成虚拟机来用😂
    whatsmyip
        13
    whatsmyip  
       2017-07-25 13:16:13 +08:00   ❤️ 1
    alpine +1
    不过目前过 G 的只见过 Hadoop
    hteen
        14
    hteen  
       2017-07-25 13:18:08 +08:00   ❤️ 1
    新版不是支持多阶段构建了吗
    gam2046
        15
    gam2046  
       2017-07-25 13:27:21 +08:00   ❤️ 1
    docker 不是虚拟机 反正我自己来说是偏好写 dockerfile 比较容易分发。别人拿去也容易改。另外一个就是基础镜像尽可能选 alpine 这样的 你看 apk add 和 apt/yum install 用起来也差不多,但是基础镜像小得多。

    话说 docker 部署环境真的好方便
    Niphor
        16
    Niphor  
       2017-07-25 13:40:02 +08:00   ❤️ 1
    alpine 最蛋疼的地方是太精简了 连 tzdata 都没,想要用 TZ env 设时区,就得自己先封装个,感觉还不如用 debian...
    Niphor
        17
    Niphor  
       2017-07-25 13:41:14 +08:00   ❤️ 1
    而且 alpine 还没 glibc,又得自己编译
    clino
        18
    clino  
       2017-07-25 13:43:17 +08:00   ❤️ 1
    docker commit 不是说一般不会用吗?
    rogerchen
        19
    rogerchen  
       2017-07-25 13:45:13 +08:00   ❤️ 1
    楼主这种上来宣泄负面情绪,一点细节的都没说的,一点要解决问题的意思的帖子真的不应该 /go/flood
    cy18
        20
    cy18  
       2017-07-25 14:15:58 +08:00 via Android   ❤️ 1
    底包影响没有想象的那么大,commit 跟 docker file 的差别才是关键问题
    cloverstd
        21
    cloverstd  
       2017-07-25 15:14:57 +08:00   ❤️ 1
    @Niphor #17

    glibc 不是有这个吗 https://github.com/sgerrand/alpine-pkg-glibc
    虽然貌似有函数没实现,cx_oracle 编译后跑不通
    Niphor
        22
    Niphor  
       2017-07-25 16:12:07 +08:00   ❤️ 1
    @cloverstd 我在 arm 上跑东西,这个只有 pc 用的,也得照着自己编译 apk
    xiqingongzi
        23
    xiqingongzi  
       2017-07-25 16:14:02 +08:00   ❤️ 1
    必然是分层才能解决啊
    v1024
        24
    v1024  
       2017-07-25 18:38:36 +08:00 via iPhone   ❤️ 2
    1. 用 alpine 2. 开发 Dockerfile 时分别 RUN 每条命令,目的是分层减少重新 build 的时间,开发好了合并 RUN 为一条,减少分层。
    v1024
        25
    v1024  
       2017-07-25 18:39:32 +08:00 via iPhone   ❤️ 1
    另外,清除依赖包、缓存不可少
    zuolan
        26
    zuolan  
       2017-07-25 19:55:28 +08:00   ❤️ 1
    去看 Dockerfile 最佳实践,一篇文章,到处都有这篇文章的翻译。
    cheneydog
        27
    cheneydog  
    OP
       2017-07-25 20:14:39 +08:00
    @v1024 清过了,少了将近 1G。
    timothyye
        28
    timothyye  
       2017-08-03 19:09:10 +08:00 via Android
    用 alpine 小一些,另外,镜像大小跟开发语言也有关,不用运行时的语言,镜像就小很多,比如 go
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   962 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:26 · PVG 05:26 · LAX 14:26 · JFK 17:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.