M1/M2 MacのRosetta2でx86コンテナーを実行する

MacでDockerを実行する場合に、Docker Desktop for Macを使用していればそのままでもアーキテクチャーがlinux/x86_64のコンテナーを実行することができます。手元のMacbook Pro M1では、次のようになっています。

$ docker buildx ls
NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT PLATFORMS
default         docker
  default       default         running 20.10.23 linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
desktop-linux * docker
  desktop-linux desktop-linux   running 20.10.23 linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

この場合には、QEMUを使用したエミュレーションで実行しています。

ここで、最近のDocker Desktop for Mac(手元にある現在のバージョンは 4.17.0)では設定画面の”Features in development”のBeta版の機能として”Use Rosetta for x86/amd64 emulation on Apple Silicon“のチェックボックスが表示されるようになっています。

Docker DesktopのFeatures in development画面

この機能を使用するためには、”General”画面で”Use Virtualization framework”にチェックが入っている必要があります。

Docker DesktopのGeneral画面

Apple SiliconとしてM1/M2を使う場合には、QEMUのエミュレーションよりもRosetta2を使用する方がより効率良くなることが期待できます。

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次