FROM 命令的目的 - Docker 文件

ove*_*nge 10 docker dockerfile

Docker容器的主要目的是避免在每个容器中都携带guest OS,如下所示。

在此处输入图片说明 正如这里提到的,该FROM指令初始化一个新的构建阶段并为后续指令设置基础镜像。因此,有效的 Dockerfile 必须FROM指令开头

我的理解是,FROM <image>允许容器在其自己的操作系统上运行。


为什么一个有效的 Docker 文件必须有FROM指令?

Max*_*Max 8

容器不运行完整的操作系统,它们共享主机操作系统的内核(通常是 Linux 内核)。那是您右侧图像中的“主机操作系统”框。

不过,它们确实提供了所谓的“用户空间隔离”——粗略地说,这意味着每个容器都管理自己的操作系统部分的副本,这些副本在用户模式下运行——通常是 Linux 发行版,例如 Ubuntu。在您的右侧图像中,它将包含在“Bins/Libs”框中。

您可以FROM在 Dockerfile 中省略该行,或使用FROM scratch, 创建一个空白的基本映像,然后自己将所有用户模式部分添加到空白内核之上。

  • 如果您在 Linux 容器模式下运行 Docker for Windows,它基本上会在幕后运行 Linux VM。所有容器共享该虚拟机的 Linux 内核(而不是 Windows 内核)。 (3认同)

Ric*_*ber 5

另一个常见用途FROM是将构建链接在一起以形成较小图像的多阶段构建。

例如,这对于限制自动构建失败期间的冗余重建很有用。

  • 链接或更多信息会很棒。如果有人不知道如何使用“FROM”,他们可能也不知道什么是“多阶段构建”。 (2认同)