arm64のCPUアーキテクチャを使用しているLambda関数用のレイヤをWindowsで作成したかったのですが、exec /bin/sh: exec format error
がどうしても解消できず、インターネットの海を彷徨っていたところ、数ヶ月越しに解決策が見つかりました。
Docker exec /bin/sh: exec format error on Arm64
前提条件
別で書いた「WSL2でDocker環境構築(Docker Desktop有料化対策)」の通りに環境構築していること。
手順
QEMUをインストールする
-
dockerドライバがサポートしているプラットフォームを確認する。
docker buildx ls
おそらくamd64(x86-64)しかサポートされていない。
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS default * docker default default running v0.11.6+0a15675913b7 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
-
QEMUをインストールする。
sudo apt-get install -y qemu qemu-user-static
-
再度確認したら、arm64のサポートが追加されているはず。
docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS default * docker default default running v0.11.6+0a15675913b7 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6