M1 Mac上のcolimaでARM(aarch64)とIntel(x86_64)を共存させて使いたくなって、方法を調べたのでメモです。
Db2 Community Edition Docker イメージはamd64(Intel)版しかありません。
一方、Milvus Standalone版はARM(aarch64)版があります。
この2つ*をcolimaで共存させて使う方法です。
*参考:
colimaはプロファイルを指定することでVM環境を切り替え可能なので、これを利用してARM(aarch64)とIntel(x86_64)を切り替えて使います。
1. デフォルトにしたいVM環境を最初に作成
ここではaarch64をデフォルトVM環境としてcolima start
で作成します。
こちらのMilvusの利用を前提に作成してみました(なのでmout-typeがちょっと違います、自分の好きなオプションで作成してください):
colima start --cpu 2 --memory 8 --mount-type 9p
2. 2個目以降のVMは-p
オプションでプロファイル名をつけて作成
-p
オプションでプロファイル名をつけて作成すると別環境が作成できます。
ここではx86_64
というプロファイル名をつけて作成してみます。
尚「M1 Mac上でcolimaを使ってDb2 Community Edition Docker イメージを動かす」のパラメータそのままです。
colima start -p x86_64 --arch x86_64 --vm-type vz --vz-rosetta --mount-type virtiofs
これで2つ目のVMができました。
3. VM環境のリスト
colima list
出力例:
$ colima list
PROFILE STATUS ARCH CPUS MEMORY DISK RUNTIME ADDRESS
default Running aarch64 2 2GiB 60GiB docker
x86_64 Running x86_64 2 2GiB 60GiB docker
アーキテクチャーがaarch64がdefault
、x86_64がx86_64
というプロファイルで作成されています。
今後colimaコマンドで操作(start
, stop
など)する際は, 何もオプションを指定しないとdefault
のVM, -p x86_64
オプションをつけるとx86_64のプロファイルのVMの操作となります。
つまりここでの例では何もオプションを指定しないとdefault
のaarch64のVM, -p x86_64
オプションをつけるとx86_64のVMの操作となります。
3. dockerコマンドの操作
dockerコマンドはどちらかのVM(プロファイル)に対して動くように設定されています。
どちらのVMかは以下のコマンドで確認します。
docker context list
出力例:
$ docker context list
NAME DESCRIPTION DOCKER ENDPOINT ERROR
colima colima unix:///Users/nishito/.colima/default/docker.sock
colima-x86_64 * colima [profile=x86_64] unix:///Users/nishito/.colima/x86_64/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
NAMEに*
がついている方の環境が今現在dockerコマンドが操作できる環境です。
上記例の場合はprofile=x86_64
のx86_64の環境となります。
これを変更するには以下のコマンドで変更します。<<NAME>>
にはdocker context list
で表示されたNAMEを指定します:
docker context use <<NAME>>
実行例:
$ docker context use colima
colima
Current context is now "colima"
$ docker context list
NAME DESCRIPTION DOCKER ENDPOINT ERROR
colima * colima unix:///Users/nishito/.colima/default/docker.sock
colima-x86_64 colima [profile=x86_64] unix:///Users/nishito/.colima/x86_64/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
NAMEに*がついている方の環境がcolima
(プロファイルなし、つまりdefaultプロファイル)に変更されました。
colimaコマンドは-p
オプションでプロファイルを指定することで、環境別に実行できますが、 dockerコマンドはdocker context use
で切り替えて使用することに注意してください。
4. colimaコマンド例
x86_64
のcolima start
colima start -p x86_64
default(ここでの例ではaarch64)のcolima start
colima start
x86_64
のcolima stop
colima stop -p x86_64
default(ここでの例ではaarch64)のcolima stop
colima stop
x86_64
のcolima VM削除
colima delete -p x86_64
以上です。