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_64x86_64linux/amd64绝大多数企业服务器、Intel Mac、PC
ARM64aarch64linux/arm64Apple 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 .