【问题标题】:Docker image size not matching the container size after a commit提交后 Docker 映像大小与容器大小不匹配
【发布时间】:2014-06-23 15:50:57
【问题描述】:

最近我从一个运行 jboss 的 centos 基础镜像创建了一个 docker 容器。最初我安装了 jdk(并已提交),这使容器变得庞大(大约 850M)。后来我卸载了jdk,安装了jre。从容器内部一个

du -xsh /

仅显示 440M。但是在提交对图像的更改后,它仍然显示 711M。图像大小是否应该不匹配(或接近)容器的 du?或者在提交时,docker 是否继续添加旧的(如 SCM)?

谢谢

【问题讨论】:

    标签: docker


    【解决方案1】:

    回答我自己的问题。似乎每当有人提交图像时,docker 都会不断地向基础图像添加层。无论您使容器将其提交到基础的程度如何,都只会在现有图像上添加一个新层,这总是会使图像膨胀。这种方法的问题是,当您对基础映像进行修改并提交时,您最终会将不需要的层带到生产环境中。我看不到合并图层的官方方法。但this link 中似乎有一些解决方法。但是,我只是从基础重新创建了所有内容,并且只提交了一次,这使得图像大小非常接近容器大小。

    【讨论】:

    • 如果您使用Dockerfile 和大量运行命令,这可能是个问题。您可以将命令与&& 连接在一起,而不是运行多个 RUN 命令。如果您使用 apt 或 conda 或其他一些包管理器,在安装命令的末尾添加 && <cache clear command> 会特别有用,以确保缓存文件不会添加到层中..
    【解决方案2】:

    我认为如果您使用 Dockerfiles 而不是提交方法来构建图像,您会发现这个问题很容易解决。如果您使用的是 Dockerfiles,您可以简单地删除添加 JDK 的 RUN 命令,然后重新构建。这将摆脱以前的层。

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多