LoginSignup
2
0

colimaでprofile切り替えで複数VMを使う

Posted at

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 

以上です。

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