今までもM1mac上でamd64なコンテナは動いたが、Venturaからqemuより速いRosetta2が使えるようになった。
必要要件
- MacOS >= 13 (Ventura)
- Rosetta2 がインストールされている
- docker cli ツールがインストールされている
colimaを立ち上げる
colimaを使う。
colimaは"Containers in Lima"で、Limaは"Linux on Mac"、つまり"Containers on Linux on Mac"ということらしい。
まずはbrewでcolimaをインストール。
|
|
次に、Rosetta emulatedなvmを作る。
|
|
最後にdocker contextをこのvmを使うように指定する。
もしかしたら、colima startだけでcontextも変わっているかもしれない。
|
|
これでdocker on Rosetta-emulated linuxが使える環境になった。
コンテナを走らせてみる
普通にやる。
|
|
--platform=linux/amd64をつけてみる。
|
|
これで今までqemu(qemu-system-aarch64)でエミュレートしていたものがRosetta2(Virtual Machine Service)を使うようになった。
全体的に、CPU、メモリ使用率が下がった気がする。
注意点
Dockerfileや、docker-compose.ymlを使う場合は、明示的にlinux/amd64を指定すること。
当たり前ではあるが、そうしないとarmのvmなのでarmなイメージが使われる。
Dockerfile
|
|
docker-compose.yml
|
|
macが再起動したときにcolima startしなければならない。
色々、方法はありそうだが面倒くさくてやっていない。
colima startって打つだけだし。。。
おわり
おわり