1. 核心概念:为什么需要设置 Platform?
Docker 镜像本质上是包含二进制文件和依赖库的文件包。这些二进制文件是为特定的 CPU 指令集(系统架构) 编译的。
这就好比人类语言:
-
x86_64 (amd64):就像“英语”。(绝大多数服务器、Intel/AMD 芯片使用)。
-
ARM64 (aarch64):就像“法语”。(Apple M 系列芯片、华为鲲鹏、部分移动设备使用)
如果不指定 —platform,Docker 会默认使用当前构建机器(你的 Mac)的架构语言。
- 如果你用 M1 Mac 构建,Docker 默认讲“法语”。
- 如果你把这个镜像放到一台讲“英语”的 Intel 服务器上运行,服务器听不懂,就会报错
2. 架构术语对照表
在 Linux 和 Docker 中,同一个架构可能有不同的叫法,但它们是等价的:
| 常用名称 | Linux (uname -m) 输出 | Docker —platform 参数值 | 典型设备 |
| x86_64 | x86_64 | linux/amd64 | 绝大多数企业服务器、Intel Mac、PC |
| ARM64 | aarch64 | linux/arm64 | Apple Silicon (M1/M2/M3)、树莓派、华为鲲鹏 |
注意:amd64 并不只代表 AMD 处理器,它是 x86_64 架构的通用代称(因为是 AMD 发明的 64 位扩展),Intel 处理器同样属于这一类
3. 决策流程:我该如何设置?
设置 —platform 的唯一依据是:你的镜像最终将在哪台机器上运行?(而不是你在哪台机器上构建)。
第一步:检查目标服务器架构
登录到你准备部署镜像的 内网 Linux 服务器,执行:
codeBash
uname -m
第二步:选择构建参数
根据上一步的输出,在 Mac 上构建时选择对应的参数:
| 目标服务器输出 | Docker Build 参数 | 说明 |
| x86_64 | —platform linux/amd64 | 最常见场景。即使你是 M1 Mac,也要强制转译为 x86 格式。 |
| aarch64 | —platform linux/arm64 | 仅当服务器也是 ARM 架构时使用。 |
第三步: 构建命令
docker build --platform linux/amd64 -t my-app:v1 .