常見問題
The requested image ‘s platform (linux/arm64/v8) does not match the detected host platform xxx
問題原因
這個錯誤表示 docker image 的 platform 與主機的 platform 不同,例如:image 可能是針對 ARM64 架構建立的,但卻嘗試在 x86 架構的主機上執行它
詳細說明
電腦的 CPU 使用不同的架構,比如在 Mac 上,之前使用的是由 Intel 生產的 x86 架構的 CPU,而從 M1 起則是採用 ARM 架構的 CPU。
如果要在 x86 架構的主機上執行 Docker image,需要使用 platform=linux/amd64
的 image;而在 ARM 架構的主機上執行,則需要使用 platform=linux/arm64
的 image
解決辦法
在 docker buildx build
建立 image 時,加入參數 --platform
指定 image 的架構
# 建立 ARM 架構的 image
docker buildx build --platform linux/arm64 -t my-image .
# 建立 x86 架構的 image
docker buildx build --platform linux/amd64 -t my-image .