gpt4 book ai didi

docker - Docker中限制42层的原因是什么?

转载 作者:行者123 更新时间:2023-12-04 14:56:12 25 4
gpt4 key购买 nike

在不同的地方,我发现了一个信息,即 docker 镜像最多只能包含42层。这似乎是使用的AUFS文件系统的限制。

谁能告诉我为什么存在此限制,或者有人有解释此限制的文档吗?

最佳答案

我开始怀疑没有这么严格的限制。
创建以下python脚本,并将其命名为“makeDockerfile.py”

with open("Dockerfile", "w") as file:
file.write("from alpine:3.8\n")
for i in range(0, 201):
file.write("run echo {i}\n".format(i=i))
然后跑 python makeDockerfile.py && docker build --tag manylayer . && docker run -it manylayer /bin/sh您会看到您正在运行一个具有> 200层的工作容器。
(注意,这已在linux上的linux容器中进行了测试)
注意,这并不意味着必须支持这么多的层,只是在某些情况下它们是可能的。
实际上,我已经看到容器失败的原因远远少于42层,并且删除任意层似乎可以解决该问题。 (请参阅 https://github.com/docker/for-win/issues/676#issuecomment-462991673)
编辑:
Docker的维护者 thaJeztah对此有以下说法:

The "42 layer limit" on aufs was on older versions of aufs, but should no longer be the case.

However, the 127 layer limit is still there. This is due to a restriction of Linux not accepting more than X arguments to a syscall that's used.

Although this limit can be raised in modern kernels, it's not the default, so if we'd go beyond that maximum, an Image built on one machine may not be usable on another machine.


(请参阅 https://github.com/docker/docker.github.io/issues/8230)

关于docker - Docker中限制42层的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39382518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com