🐥

colima(lima + docker)で指定したメモリで起動できなかった

2022/11/13に公開

困ったこと

colimaでdockerを使った開発環境を構築していました。(colimaやlimaの説明は省きます)
VMはデフォルトだとcpu: 2,memory: 2GiB,disk: 60GiBの設定で起動されるようです。
私が使う環境ではメモリが2GiBだと足りずに開発環境が落ちてしまうため、10GiBを割り当てようとしていました。
その場合、colima起動時に以下のオプションでメモリを指定します。

% colima start --memory 10

しかし、起動しても3GiBしか割り当てられず、環境構築に詰まってしまっていました。
ちなみにメモリはdocker statsで確認しました。

// 関係ない項目は省略しています
MEM USAGE / LIMIT
6.766MiB / 2.909GiB

原因

原因としてはmacOSが12.3以下かつM1チップ、QEMUが7.0以上の場合は、カーネルパニックを避けるためにメモリが3GiBまでしか割り当てられないみたいです。
ref: https://github.com/lima-vm/lima/issues/795

colimaのログは高速で流れて残らなかったので中々気づけなかったのですが、メモリの割り当てが3GiBになっている理由はちゃんと書かれていました。

% colima start --memory 16
INFO[0000] starting colima
INFO[0000] runtime: docker
INFO[0000] preparing network ...                         context=vm
INFO[0000] starting ...                                  context=vm
> Using the existing instance "colima"
> [hostagent] Reducing the guest memory from 16GiB to 3GiB, to avoid host kernel panic on macOS <= 12.3 with QEMU >= 7.0; Please update macOS to 12.4 or later, or downgrade QEMU to 6.2; See https://github.com/lima-vm/lima/issues/795 for the further background.

解決方法

(書くまでもないですが、)macOSを12.6.1にアップデートしました。無事、colimaを指定通りのメモリで起動できるようになりました。

Discussion