假设我有 2 个选项来添加 docker 层。
选项 1:
RUN python -m nltk.downloader punkt averaged_perceptron_tagger brown
选项 2:
RUN python -m nltk.downloader punkt
RUN python -m nltk.downloader brown
RUN python -m nltk.downloader averaged_perceptron_tagger
我知道第二个选项添加了 3 层,而第一个选项只添加了 1 层。
层数是否会影响当前和 future docker 镜像的大小、设置时间或性能?
注:Current表示当前图像。 Future 意味着任何图像都可以使用现有图像中的某些层,从而加快设置速度。
最佳答案
它确实会影响设置时间并可能影响大小。它不应该是性能,即性能是指正在运行的应用的实际性能。
它确实会影响设置时间,因为层定义得越好,它们就越能更好地重复用于其他图像。归根结底,一个图层只是一个缓存,如果它可以为其他图像共享,构建时间将会得到改善。
关于大小,这实际上取决于您构建图像的方式。例如,如果您有运行时不需要的构建依赖项,则图像会更大,因为它会有这样的依赖项。说到 python,通常您会想要安装 build-essential
来构建您的应用程序,但是,一旦安装了软件包,您就不再需要 build-essential
。如果不删除它,图像会变大。
要删除它,您有两种选择:
- 要么使用长 RUN 语句,在其中安装
build-essential
,安装所需的包,然后删除build-essential
,都在同一个RUN
中。 - 只需使用多阶段,并使用不同的阶段来构建和运行。
关于docker - 层数是否会影响当前和 future docker 镜像的大小、设置时间或性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60147349/