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

M1 Mac上のcolimaでARM(aarch64)とIntel（x86_64）を共存させて使いたくなって、方法を調べたのでメモです。

Db2 Community Edition Docker イメージはamd64(Intel)版しかありません。
一方、Milvus Standalone版はARM(aarch64)版があります。
この2つ*をcolimaで共存させて使う方法です。

*参考：
- [M1 Mac上でcolimaを使ってDb2 Community Edition Docker イメージを動かす](https://qiita.com/nishikyon/items/553b5c4dff473d9b6322)
- [M1 Mac上でcolimaを使ってベクトルDB Milvusをインストール](https://qiita.com/nishikyon/items/f529b63a1117d2f10099)


colimaはプロファイルを指定することでVM環境を切り替え可能なので、これを利用してARM(aarch64)とIntel（x86_64）を切り替えて使います。

# 1. デフォルトにしたいVM環境を最初に作成
ここではaarch64をデフォルトVM環境として`colima start`で作成します。
[こちらのMilvusの利用](https://qiita.com/nishikyon/items/f529b63a1117d2f10099/)を前提に作成してみました(なので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 イメージを動かす](https://qiita.com/nishikyon/items/553b5c4dff473d9b6322)」のパラメータそのままです。
```
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 
```

以上です。