LoginSignup
4
2

x86_64のUbuntuでarm64のdockerイメージを実行する

Posted at

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
    
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2