【发布时间】:2020-01-24 10:42:02
【问题描述】:
我在两个不同的 Dockerfile 中使用完全相同的部分(在这两种情况下,基础都是 ubuntu:18.04),它们使用 wget 从远程位置下载两个文件。
ENV ROBOT v1.5.0
ENV ROBOT_JAR=https://github.com/ontodev/robot/releases/download/$ROBOT/robot.jar
RUN wget $ROBOT_JAR -O /tools/robot.jar && \
wget https://raw.githubusercontent.com/ontodev/robot/$ROBOT/bin/robot -O /tools/robot && \
chmod +x /tools/*
docker history --no-trunc [...]
告诉我在一个 Dockerfile 中,这个命令创建的层是 114 MB:
... /bin/sh -c wget $ROBOT_JAR -O /tools/robot.jar && wget https://raw.githubusercontent.com/ontodev/robot/$ROBOT/bin/robot -O /tools/robot && chmod +x /tools/* 114MB
而另一个只有 44.9MB:
... /bin/sh -c wget $ROBOT_JAR -O /tools/robot.jar && wget https://raw.githubusercontent.com/ontodev/robot/$ROBOT/bin/robot -O /tools/robot && chmod +x /tools/* 44.9MB
除了相同的基础之外,Dockerfiles 当然是非常不同的(例如,114MB 的文件很大,而 45MB 的文件只有两个定义的层);我很好奇:什么可能导致尺寸差异?可以通过某种方式缓解这种情况吗?
编辑 1:
这是 114 MB 的案例:https://github.com/INCATools/ontology-development-kit/blob/master/Dockerfile
这是另一个:https://github.com/INCATools/ontology-development-kit/blob/master/docker/testdocker/Dockerfile
【问题讨论】:
-
图片中
/tools目录下还有其他东西吗?您能否就这两个 Dockerfile 中发生的其他情况提供更多背景信息? -
感谢您的关注!我用两个有问题的 dockerfile 的链接更新了这个问题。是的,/tools 目录中还有很多东西。这会起作用吗?
标签: docker dockerfile