【问题标题】:centos docker image too big sizecentos docker 镜像太大
【发布时间】:2018-09-01 23:59:22
【问题描述】:

我用这个 Dockerfile 构建了一个镜像。

FROM sanmingzi/ruby:1.9.3

RUN yum -y install gcc ruby-devel zlib-devel \
  && yum -y remove gcc ruby-devel zlib-devel \
  && yum -y clean all \
  && rm -rf /var/cache/yum \
  && rm -rf /var/tmp/*

我希望新图像的大小与 sanmingzi/ruby:1.9.3 相同,但我错了。比旧图像大约有 50MB。我使用docker history 来显示细节。

IMAGE               CREATED             CREATED BY                                      SIZE
b154156f1053        4 minutes ago       /bin/sh -c yum -y install gcc ruby-devel z...   55.4MB

【问题讨论】:

    标签: image docker centos yum


    【解决方案1】:

    当我们在 CentOS 镜像中安装 gccruby-develzlib-devel 时,还会安装或升级很多其他依赖包:

    Dependencies Resolved
    
    ================================================================================
     Package                Arch       Version                    Repository   Size
    ================================================================================
    Installing:
     gcc                    x86_64     4.8.5-16.el7_4.2           updates      16 M
     ruby-devel             x86_64     2.0.0.648-33.el7_4         updates     131 k
    Installing for dependencies:
     cpp                    x86_64     4.8.5-16.el7_4.2           updates     6.0 M
     glibc-devel            x86_64     2.17-196.el7_4.2           updates     1.1 M
     glibc-headers          x86_64     2.17-196.el7_4.2           updates     676 k
     kernel-headers         x86_64     3.10.0-693.21.1.el7        updates     6.0 M
     libgomp                x86_64     4.8.5-16.el7_4.2           updates     154 k
     libmpc                 x86_64     1.0.1-3.el7                base         51 k
     mpfr                   x86_64     3.1.1-4.el7                base        203 k
     ruby                   x86_64     2.0.0.648-33.el7_4         updates      71 k
     ruby-irb               noarch     2.0.0.648-33.el7_4         updates      92 k
     ruby-libs              x86_64     2.0.0.648-33.el7_4         updates     2.8 M
     rubygem-bigdecimal     x86_64     1.2.0-33.el7_4             updates      83 k
     rubygem-io-console     x86_64     0.4.2-33.el7_4             updates      54 k
     rubygem-json           x86_64     1.7.7-33.el7_4             updates      79 k
     rubygem-psych          x86_64     2.0.0-33.el7_4             updates      82 k
     rubygem-rdoc           noarch     4.0.0-33.el7_4             updates     322 k
     rubygems               noarch     2.0.14.1-33.el7_4          updates     219 k
    Updating for dependencies:
     libgcc                 x86_64     4.8.5-16.el7_4.2           updates      98 k
    
    Transaction Summary
    ================================================================================
    Install  2 Packages (+16 Dependent packages)
    Upgrade             (  1 Dependent package)
    

    之后我们只删除gccruby-develzlib-devel

    Dependencies Resolved
    
    ================================================================================
     Package             Arch         Version                  Repository      Size
    ================================================================================
    Removing:
     gcc                 x86_64       4.8.5-16.el7_4.2         @updates        37 M
     ruby-devel          x86_64       2.0.0.648-33.el7_4       @updates       337 k
     zlib-devel          x86_64       1.2.7-17.el7             @base          132 k
    Removing for dependencies:
     openssl-devel       x86_64       1:1.0.2k-8.el7           @base          3.1 M
    
    Transaction Summary
    ================================================================================
    Remove  3 Packages (+1 Dependent package)
    

    这就是为什么我们的最终图像比原始图像尺寸更大。

    【讨论】:

    • 非常感谢。是否有任何解决方案避免安装依赖项并升级?
    • 你的目标是什么?你想在构建过程中从源代码编译一些东西,然后删除用于编译提议的包,对吧?
    • 多阶段 docker 构建在这种情况下可以帮助您 - docs.docker.com/develop/develop-images/multistage-build/…
    猜你喜欢
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多