我是docker的新手,我正在试用文档中的第一个hello world示例。据我所知,hello-world图像基于划痕图像。有人可以解释一下划痕图像是如何工作的吗?据我了解,它基本上是空白的。那么在hello-world图像中如何执行二进制文件?
答案 0 :(得分:8)
scratch
图像是Docker中最小的图像。这是所有其他图像的基本祖先。 scratch
图片实际上是空的。它不包含任何文件夹/文件...
scratch
图像主要用于构建其他基本图像。例如,debian图像是从头开始构建的:
FROM scratch
ADD rootfs.tar.xz /
CMD ["bash"]
rootfs.tar.xz包含所有文件系统文件。 Debian映像将文件系统文件夹添加到临时映像,该映像为空。
据我所知,它基本上是空白的。如何执行二进制文件 那么你好世界的形象呢?
临时图像为空白。添加到临时图像的hello-world可执行文件实际上是静态编译的,这意味着它是自包含的,不需要任何其他库来执行。
如offical docker docs中所述:
假设您从Docker构建了“hello”可执行示例 GitHub示例C源代码,您使用-static编译它 flag,然后您可以使用:docker build --tag构建此Docker镜像 喂
这确认了hello-world可执行文件是静态编译的。有关静态编译的更多信息,请阅读here。