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