Docker疑難雜症-exec format error​

docker常常會需要部屬在不同的平台(i.e. amd64、aarch64、Arm64…)

大部分情況應該都是一般的64位元系統,但有時因為成本考量、實務上的需求,而採用其他架構

這篇文章就是我在Arm64上架設http service時所遇到的問題

首先我們先按照一般流程將container給啟動

docker run <image>

接著你就會收到以下錯誤

exec /bin/sh: exec format error

解決方法

首先我們要先運作這行指令,來確定現在可以build甚麼樣的image

sudo docker buildx ls

這邊因為我已經安裝了額外的東西,不然應該會只會看到linux/amd64
接著輸入下面這串指令

sudo apt-get install -y qemu qemu-user-static

都沒有問題的話,就會得到上面那張圖片的結果
接著將image重新build成可以在arm64上面運作的版本
參考範例如下

sudo docker build -t <image-name> --platform linux/arm64 .

恭喜你現在可以在Arm64上部屬自己的docker container了

作業系統及平台

  • os:Ubuntu 22.04.3 LTS
  • platfrom:aarch64


參考資料

https://stackoverflow.com/questions/73253352/docker-exec-bin-sh-exec-format-error-on-arm64

Scroll to Top