docker的划痕图像是什么?

我是新来的docker工人,我试着在文档中的第一个你好世界的例子。 据我所知,你好世界的图像是基于临时图像的顶部。 有人可以解释一下scrapy图像的工作原理吗? 据我所知,这本质上是空白的。 那么在hello-world图像中执行二进制文件是如何呢?

这实际上并不是空白,它只是使用一个非常小的debian版本,如果你看看这里的源代码,它显示它正在拉动debian:stretch-slim

https://github.com/docker-library/hello-world/blob/master/Dockerfile.build#L2

编辑:

Docker集线器上有一个临时图像,但它基本上只是创build基本图像的canvas,在设置操作系统并从中创build新图像之前,它本质上是无用的。 除非您编写了自己的操作系统,否则您可能永远都不需要使用它,因为几乎每个现有的平台已经以某种forms存在,作为基础映像供您构build。

scratch图像是Docker中最小的图像。 这是所有其他图像的基本祖先。 scratch图像实际上是空的。 它不包含任何文件夹/文件…

scratch图像主要用于构build其他基本图像。 例如, debian映像是从头开始构build的:

 FROM scratch ADD rootfs.tar.xz / CMD ["bash"] 

rootfs.tar.xz包含所有的文件系统文件。 Debian映像将文件系统文件夹添加到临时映像,该映像是空的。

据我所知,这本质上是空白的。 那么在hello-world图像中执行二进制文件是如何呢?

临时图像是空白的。添加到临时图像的hello-world可执行文件实际上是静态编译的,这意味着它是自包含的,不需要任何额外的库来执行。

正如在官方docker文件中所述 :

假设您从Docker GitHub示例C源代码构build了“hello”可执行示例,并且使用-static标志编译了该示例,则可以使用以下命令构build此Docker镜像:docker build –tag hello

这确认了hello-world可执行文件是静态编译的。 有关静态编译的更多信息,请阅读此处 。