什么是 Docker 构建阶段?

Nie*_*Bom 5 docker dockerfile

据我所知,Docker 中的构建阶段是基本的事情,我对它们有实际的理解,但我很难给出一个正确的定义,而且我似乎也找不到一个。

那么:Docker构建阶段的定义是什么?

编辑:我不是“我如何使用构建阶段?” 或“如何使用多重构建阶段?” 人们似乎非常渴望回答:-)

我有这个问题的原因是因为我在文档中看到了以下句子:

  • “FROM 指令初始化一个新的构建阶段”
  • “可以为新的构建阶段命名”

这让我想知道:构建阶段到底是什么?

tgo*_*gos 2

我认为Docker 构建阶段不会有严格的定义,因为构建阶段通常是理论上的:

  • 可以由你定义
  • 取决于您的情况(语言/库)

在这个问题中:构建和部署之间的区别?其中一个答案说...

Build 的意思是编译项目

我想你也可以这样看。构建阶段是生成稍后可以获取和使用的内容的任何过程。


docker多阶段构建的想法是:

  1. 生成你需要的东西
  2. 留下不需要的东西,以更轻量的方式使用步骤 1 的产品

如果您已阅读文档,Alex Ellis 有一个很好的示例,其中发生了相同的逻辑:

  1. 他从golang图像开始,添加库,构建他的应用程序(Go 生成一个二进制可执行文件)
  2. 之后,他不需要 golang 和库来发布/运行它,因此,他选择一个alpine图像,添加步骤 1 中的可执行文件,并使用尺寸小得多的图像来发布他的应用程序。