Skip to content

Latest commit

 

History

History
11 lines (6 loc) · 1.4 KB

scratch-image.md

File metadata and controls

11 lines (6 loc) · 1.4 KB

scratch 镜像

scratch 是一个特殊的 Docker 镜像,它是空的,不包含任何文件或文件系统。

当你使用 FROM scratch 作为 Dockerfile 的起始行时,意味着你打算创建一个非常精简的镜像,不基于任何已有的操作系统或者其他基础镜像。这种方式通常用于创建非常小的、只包含你的应用程序和它所需的最小依赖的 Docker 镜像。例如,静态编译的 Go 语言应用就经常使用这种方式来创建 Docker 镜像,因为静态编译的 Go 应用已经包含了运行程序所需的所有代码,不需要任何额外的操作系统功能。

然而,这种方式创建的 Docker 镜像,由于缺乏任何预先存在的文件系统或工具,可能会在某些情况下难以使用。例如,FROM scratch 的镜像中不会包含任何 shell(比如 shbash),也不会包含诸如 lscat 等常用工具。这可能导致排查问题或者运行一些常规任务变得困难。

注:如果想要在 docker-compose.yml 中挂载新的卷并覆盖 entrypoint,基于 scratch 构建镜像会报错找不到挂载的文件。解决办法是临时替换成 ubuntu 镜像,发布时再换回 scratch。

使用方式:在第二阶段基于 scratch 镜像构建,只包含编译好的应用程序和一些最小的运行时依赖,以保持最终 Docker 镜像的精简。