1
1

Colimaでvz+RosettaのVMでx86用Dockerコンテナを実行する場合にはarchにaarch64を指定する

Posted at

はじめに

Apple社のMacBookがARMベースのCPU、すなわちApple Siliconへと移行して数年が経過した。現在市場に出回っている新製品のCPUはすべてARMアーキテクチャを採用している。この変化は多くの利点をもたらしたが、開発業務においては依然としてホストマシンのCPUがx86系を前提としているケースも少なくない。このような状況を踏まえ、M1 Mac上でx86用のDockerコンテナを実行し、コンテナ内でビルドを行う方法について調査を進めた。

Docker Desktop for Mac、Orbstack、そしてColimaは、M1 Mac上でDocker環境を簡易に構築できるツールである。特にColimaを使用する際に遭遇した思わぬ落とし穴について、その解決法を含めてメモとして記録する。

Colimaでx86_64用Dockerコンテナを実行する

具体的にx86_64用のDockerコンテナを実行するプロセスと失敗について確認する。

Colimaとは

Colimaは、Limaをベースとしたコンテナランタイムである。LimaはLinuxの仮想マシンをmacOS上で簡単に起動できるツールであり、ColimaはこのLimaを利用してDockerコンテナを扱いやすくするための環境を提供する。

インストール

Homebrewを使用してColimaをインストールすることができる。以下のコマンドを実行することで簡単にインストールできる。

$ brew install colima

VMを作成

x86_64用のDockerコンテナを実行するためには、ColimaのVMを適切に設定して作成する必要がある。以下の手順でVMを作成することが推奨される。

x86_64アーキテクチャのVMを作成

$ colima start --cpu 8 --memory 12 --disk 160 --arch x86_64 --vm-type=vz --vz-rosetta --mount-type virtiofs

--archにx86_64を指定すると、x86_64用のQEMUを起動し、その結果処理が遅くなる。

このコマンドは、x86_64アーキテクチャ用のVMを作成し、Dockerコンテナの実行環境を準備する。

aarch64アーキテクチャのVMを作成

$ colima start --cpu 8 --memory 12 --disk 160 --arch aarch64 --vm-type=vz --vz-rosetta --mount-type virtiofs

vzとRosettaを使用してaarch64アーキテクチャ用のVMを作成することで、より高速にx86_64用のDockerコンテナを実行することが可能である。

この方法は、ARMアーキテクチャの性能を最大限に活用しつつ、x86_64用のアプリケーションを動作させることができる。

x86_64用Dockerコンテナを実行

以下のコマンドを使用して、x86_64のUbuntu 22.04のデスクトップ版のDockerコンテナを起動することができる。

$ docker run --rm -it --platform=linux/amd64 ubuntu:22.04

このコマンドは、指定されたプラットフォーム(この場合はlinux/amd64)でUbuntu 22.04のコンテナを起動し、対話的なシェルを提供する。これにより、開発者はM1 Mac上でもx86アーキテクチャを必要とするアプリケーションの開発やテストを行うことができるようになる。

コンテナ内で実行したコマンド
$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.6  0.0 1196696 6452 pts/0    Ss   22:22   0:00 /mnt/lima-rosetta/rosetta /bin/bash
root          10  0.0  0.0 1198840 4864 pts/0    R+   22:22   0:00 /usr/bin/ps aux

コンテナ内でpsコマンドを実行するとbashコマンドがrosettaを経由して実行されていることが確認できる。


この記事では、M1 Mac上でx86_64用のDockerコンテナを実行するための方法と、それを実現するためのツールであるColimaの使用方法について説明した。この情報が、同様の環境で開発を行っている方々の参考になれば幸いである。

1
1
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
1
1