解決mac m2版本build或pull的docker鏡像無法在x86架構linux下執行的問題

背景

一般測試/生產集群上不通外網,導致啟動一些組件/服務會拉不到鏡像。
通常情況下,研發會在自己的本地機器上拉下來鏡像并打包上傳到服務器上,再導入到集群的鏡像倉庫中。

報錯

運行鏡像,報錯:
exec /usr/bin/bash: exec format error

原因

mac m2是apple芯片,arm架構,線上linux服務器是amd架構,導致鏡像無法運行。

解決方案

在docker pull鏡像的時候,使用--platform參數指定架構版本。
取值通常有linux/arm64,linux/amd64等幾種常見的。

docker pull docker.io/istio/examples-bookinfo-productpage-v1:1.18.0 --platform linux/amd64

正常執行docker save -o打包、上傳、docker load -i導入鏡像,啟動服務即可。

在docker build鏡像的時候,可以使用buildx和--platform參數指定架構版本。

docker buildx build --platform=linux/amd64 -t productpage-no-headers:1.1.0.amd .
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容