小编典典

Dockerfile中的命令数

docker

我注意到Dockerfile中的每一行都会创建一个单独的映像。创建的图像数量是否有限制?

我们是否应该尝试做一个单一的RUN cmd1 && cmd2 && cmd3替代方案?

如果我们使用Quay这样的服务,这会有什么不同?

谢谢!


阅读 265

收藏
2020-06-17

共1个答案

小编典典

正如Alister所说,如果您使用AUFS文件系统,则Docker映像中的层数是有上限的。
在Docker 0.7.2版本中,限制增加到了127层(
changelog
)。

由于这是对底层联合文件系统的限制(对于AUFS),因此使用Quay或其他私有注册表不会改变结果。但是您可以使用其他文件系统。

当前将使用替代文件系统devicemapper(请参阅CLIdocs)。这些其他文件系统在层数上可能有不同的限制-我认为devicemapper没有上限。

没错,通过在单个RUN语句中运行多个命令,可以减少层数。

或者,如果您确实需要很多层来构建映像,则可以构建映像,直到达到最大值为止,然后使用它docker export来创建映像文件系统的未分层副本。然后dockerimport再次将其重新转换为图像,这次只有一层,然后继续构建。您会以这种方式失去历史。

2020-06-17