我试图在我的一个映像中升级基础映像版本,但由于40层的限制,我的构建失败了。
我注意到在旧映像中,docker history
给出了以下输出:
IMAGE CREATED CREATED BY SIZE
092c6c14cf83 8 days ago /bin/sh -c #(nop) ENV LANG 0B
376101232840 8 days ago /bin/sh -c /tmp/tmp.sh 65.4MB
6c58dda60477 8 days ago /bin/sh -c #(nop) COPY file:a 1.27kB
1264065f6ae8 7 months ago 4.72kB
<missing> 7 months ago 207MB
但在更新映像版本后,输出如下:
IMAGE CREATED CREATED BY SIZE
3233036cf707 41 hours ago /bin/sh -c #(nop) 0B
1e72b109fe29 41 hours ago /bin/sh -c /tmp/tmp.sh 65.5MB
e4bb0f8240aa 41 hours ago /bin/sh -c #(nop) COPY file:a 1.27kB
dea12a7906f5 12 days ago /bin/sh -c rm -f /tmp/tls-ca- 207MB
<missing> 12 days ago /bin/sh -c rm -f '/etc/yum.re' 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL "dist 0B
<missing> 12 days ago /bin/sh -c #(nop) ADD file:7 0B
<missing> 12 days ago /bin/sh -c #(nop) ADD file:ad 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL relea 0B
<missing> 12 days ago /bin/sh -c mkdir -p /var/log 0B
<missing> 12 days ago /bin/sh -c rm -rf /var/log/ 0B
<missing> 12 days ago /bin/sh -c #(nop) CMD ["/bin 0B
<missing> 12 days ago /bin/sh -c #(nop) ENV PATH / 0B
<missing> 12 days ago /bin/sh -c #(nop) ENV contain 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL io. 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL io. 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL io. 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL des 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL sum 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL com 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL com 0B
<missing> 12 days ago /bin/sh -c #(nop) LABEL 0B
<missing> 12 days ago /bin/sh -c #(nop) ADD multi:3 0B
<missing> 12 days ago /bin/sh -c #(nop) ADD file:21 0B
<missing> 12 days ago /bin/sh -c #(nop) ADD file:09 0B
你知道为什么会这样吗?这些额外的图层似乎来自于基础图片。你知道如何让它们看起来像旧版本中的一个图层吗?
先谢了!
1条答案
按热度按时间ux6nzvsh1#
所以我后来意识到了一些关于这个问题的事情。
首先,
docker history
没有给予你真实的层数 *。为了找到真实的层数,我使用docker inspect --format='{{join .RootFS.Layers "\n"}} $INSTANCE_ID | wc -l
来获得真实的层数。其次,如果您仍然需要压缩层,请尝试使用docker build中的
--squash
指令(实验特性),或者使用docker-squash
。**-
docker history
的输出显示了Map到层差异的散列列表。由于这些散列是随机生成的,因此Map由docker引擎处理。当图像被拉取时,此Map丢失,您将在IMAGE
字段中获得<missing>
值。如果没有this amazing blog post,则无法解决此问题 *