概念澄清
FROM scratch 时,意味着不从任何系统镜像继承,后续指令(如 COPY 可执行文件、CMD)将作为镜像的第一层。它常用于制作极简运行时镜像,尤其是静态编译的二进制程序,体积更小、攻击面更低。能做的事
FROM scratch + COPY app /app + CMD ["/app"]。scratch 镜像中,既利用 CentOS 的编译环境,又得到极简运行时。优势与代价
scratch 运行时不含 shell 与多余库,镜像更小、潜在漏洞更少。适用场景与简单示例
FROM scratch
COPY myapp /myapp
CMD ["/myapp"]
docker build -t myapp:latest .
docker run --rm myapp:latest
scratch 不含 shell,若需要调试可临时改用 FROM alpine 或 FROM centos:7 进入容器排查。