Dockerfile RUN甚至在清理时创建了一个胖层

时间:2016-03-29 02:06:00

标签: docker dockerfile

通常可以理解,如果在大文件操作后RUN指令清除,则生成的图层大小会更小。但是,当我执行以下脚本时,生成的图层很大,大致对应于最初复制和清理的文件的大小。

如果复制的文件在同一层中清理,那么如何提交图层大小?

RUN mkdir -p /etc/puppet && \
    cd /etc/puppet && \
    apt-get update && apt-get install -y wget puppet && \
    wget -rnH --level=10 -e robots=off --reject "index.html*" http://somefileserver.org/puppet/allpuppetstuff && \
    puppet module install puppetlabs/stdlib && \
    puppet module install 7terminals-java && \
    puppet apply -e "include someserver" && \
    apt-get purge -y --auto-remove puppet wget && \
    rm -rfv /etc/puppet/* && \
    rm -rfv /var/lib/apt/lists/*

1 个答案:

答案 0 :(得分:1)

经过一些调整后找到了一些细节。

似乎docker在旧图层上重复,如果较新的图层正在修改先前图层上保留的文件。这是由上面的RUN命令创建的胖层的原因,即使在操作结束时的总文件大小差异最小。我找不到任何明确的资源来引用这个,但这是迄今为止的经验。

基本上,与图像相关的文件操作应始终在一个层中完成。