from是dockerfile必须的首条指令,用于指定基础镜像;推荐使用明确标签(如python:3.9)或摘要(如node@sha256:abc123)以确保构建一致性;多阶段构建允许多个from并支持as命名和arg动态传参。
from 是每个 dockerfile 中必须出现的第一条指令,它定义了构建镜像所基于的基础镜像。
FROM 的基本写法
语法很简单:
-
FROM <image></image>—— 使用最新标签(即:latest) -
FROM <image>:<tag></tag></image>—— 明确指定标签,推荐使用 -
FROM <image>@<digest></digest></image>—— 用镜像摘要(digest)锁定精确版本,最安全
为什么推荐带标签或 digest?
:latest 不稳定,不同时间构建可能拉取到不同版本,导致环境不一致。例如:
-
FROM python:3.9比FROM python更明确 -
FROM ubuntu:22.04比FROM ubuntu:latest更可预期 -
FROM node@sha256:abc123...能彻底避免镜像被覆盖或篡改
多阶段构建中可以多次使用 FROM
一个 Dockerfile 可以有多个 FROM 指令,每条开启一个新构建阶段:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- 常用于分离构建环境和运行环境(如用
golang:alpine编译,再 COPY 到alpine:latest) - 各阶段可用
AS <name></name>命名,后续用COPY --from=<name></name>引用
FROM 后面可以跟参数(Docker 17.05+)
支持在多阶段构建中传入构建参数:
ARG BUILD_IMAGE=alpine:3.18FROM $BUILD_IMAGE
这样可以在构建时用 --build-arg 动态指定基础镜像。










