主要目的是为了避免在每个容器中携带来宾操作系统,如下所示。
如here所述,FROM
指令初始化一个新的构建阶段并为后续指令设置基本映像。因此,有效的Dockerfile必须以FROM
指令开始。
我的理解是,FROM <image>
允许容器在其自己的操作系统上运行。
为什么有效的Docker文件必须具有FROM
指令?
答案 0 :(得分:2)
容器不能运行完整的操作系统,它们共享主机操作系统的内核(通常是Linux内核)。那是您右图中的“主机操作系统”框。
尽管它们确实提供了所谓的“用户空间隔离”-粗略地说,这意味着每个容器都管理自己的以用户模式运行的OS部分的副本-通常是Linux发行版,例如Ubuntu。在您的右侧图片中,该图片将包含在“容器/库”框中。
您可以在Dockerfile中省去FROM
行,或使用FROM scratch
创建空白base image,然后将所有用户模式片段添加到空白内核之上
答案 1 :(得分:1)
FROM指令指定您将用来构建映像的基础OS体系结构。您必须使用某种形式的基础映像才能开始构建映像。它可以是ubuntu,centos或任何最小的Linux映像,例如ALPINE,只有5MB!想法是仅安装所需的软件包,而不是将所有内容捆绑和打包为发行版。与完整的OS发行版相比,这使docker映像的大小非常小。我希望这回答了你的问题。如果您有任何问题,请告诉我。
答案 2 :(得分:0)
FROM
的另一个常见用法是将构建链接在一起以形成较小图像的多阶段构建。
这对于限制自动构建失败期间的冗余重建很有用。