You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker基础镜像构建问询:alpine:latest与scratch如何创建?

scratch 镜像的本质

scratch 是 Docker 官方提供的空镜像,它不是通过常规 Dockerfile 构建出来的——本质上就是一个没有任何文件系统内容的镜像模板。当你在 Dockerfile 里写 FROM scratch 时,Docker 会直接使用这个预定义的空镜像作为构建起点,镜像里没有任何系统文件、库或者工具,完全干净。

alpine:latest 镜像的构建逻辑

alpine:latest 是 Alpine Linux 官方基于**原生 Linux 根文件系统(rootfs)**直接构建的,全程不依赖其他 Docker 镜像,步骤大概是这样:

  • 首先,Alpine 官方会编译出最小化的 rootfs 包,这个包只包含维持系统运行的核心组件:musl libc、busybox(集成了绝大多数常用 Unix 工具),以及最基础的系统配置,体积能压缩到几 MB。
  • 然后通过 Docker 底层工具(比如 docker import 命令,或者直接调用镜像构建 API),把这个纯净的 rootfs 导入成 Docker 镜像,设置好默认的启动命令(比如 /bin/sh),最终就得到了 alpine:latest。
  • 后续版本更新时,Alpine 官方会基于新版的 rootfs 重复这个流程,始终保持镜像的轻量特性。
补充:为什么用 scratch 做极简镜像

你查到的那种多阶段构建方式,用 alpine 做构建环境、scratch 做运行环境,核心是为了把镜像体积压到最小。因为 scratch 是空的,你只需要把编译好的二进制文件(以及它依赖的必要动态库,如果是动态编译的话)复制进去就行。不过要注意,如果是动态编译的程序,必须把所有依赖的库一起复制到 scratch 镜像里,否则程序会因为找不到库而无法运行;如果是静态编译的程序(比如 Go 语言加 CGO_ENABLED=0 参数编译出来的二进制),直接复制到 scratch 里就能运行,体积会非常小。

内容的提问来源于stack exchange,提问作者Etheilred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:51:01