🐳

Rancher Desktop v1.8.0 で Rosetta 2 & VirtioFS を有効化する

2023/03/19に公開1

出ていた。めでたい。
https://github.com/rancher-sandbox/rancher-desktop/releases/tag/v1.8.0

macOS でコンテナでアプリケーション開発してる人に最大に嬉しいアプデはこれ

Support for Apple Virtualization framework on macOS (experimental)

On macOS it is now possible to use experimental support for the Virtualization framework instead of QEMU for running the virtual machine. Unlike QEMU it supports more than 8 CPUs on aarch64 machines. There are several known performance and stability issues, so this is for evaluation purposes only. Virtual machine type can be switched with from QEMU to VZ with

rdctl set --virtual-machine.type vz

これは Lima が 0.14.0 で Virtualization framework を利用できるようになったこと、Rancher Desktop v1.8.0が Lima 0.15.0 をバンドルしたこと、Rancher Desktop がそのあたり利用するよう頑張ったことで、実現されてます。

https://github.com/lima-vm/lima/releases/tag/v0.14.0

前準備

Rancher Desktop を v1.8.0 にアップグレードします。

❯ brew upgrade rancher

v1.8.0 です。

どうやって有効化するか

Rancher Desktop v1.8.0 の時点では、CUI rdctl のみで制御できます。GUIでこのあたり有効化/無効化の制御はできないようです。

有効化前の設定値は以下で確認できます。

❯ rdctl list-settings | jq '.experimental'
{
  "virtualMachine": {
    "type": "qemu",
    "useRosetta": false,
    "socketVMNet": false,
    "mount": {
      "type": "reverse-sshfs",
      "9p": {
        "securityModel": "none",
        "protocolVersion": "9p2000.L",
        "msizeInKB": 128,
        "cacheMode": "mmap"
      }
    },
    "networkingTunnel": false
  }
}

設定変更は rdctl set コマンドで投入します。 rdctl set だけ打つと、投入可能なフラグが簡単な解説とともに一覧表示されます。Rancher Desktop v1.8.0 のリリースノートでは rdctl set --virtual-machine.type vz でできる風に記述がありますが、どうやらフラグの名称を改めたらしいです。また、他にもフラグを設定しないとオイシイ機能を利用できないっぽいです。

今回投入するのは以下。

❯ rdctl set \
          --experimental.virtual-machine.type vz \
          --experimental.virtual-machine.mount.type virtiofs \
          --experimental.virtual-machine.socket-vmnet \
          --experimental.virtual-machine.use-rosetta

Status: reconfiguring Rancher Desktop to apply changes (this may take a while).

設定値変更が投入できたら、GUI画面側で設定変更中になります。質問ポップアップに答えると先に進みます。

GUI画面側で終わった気配を感じた頃合いに rdctl で覗くと、もろもろ反映を確認できます。

❯ rdctl list-settings | jq '.experimental'
{
  "virtualMachine": {
    "type": "vz",
    "useRosetta": true,
    "socketVMNet": true,
    "mount": {
      "type": "virtiofs",
      "9p": {
        "securityModel": "none",
        "protocolVersion": "9p2000.L",
        "msizeInKB": 128,
        "cacheMode": "mmap"
      }
    },
    "networkingTunnel": false
  }
}

元に戻すには

どうにも挙動がダメなところがあれば元に戻せます。

❯ rdctl set \
          --experimental.virtual-machine.type qemu \
          --experimental.virtual-machine.mount.type reverse-sshfs

Status: reconfiguring Rancher Desktop to apply changes (this may take a while).
❯ rdctl list-settings | jq '.experimental'
{
  "virtualMachine": {
    "type": "qemu",
    "useRosetta": true,
    "socketVMNet": true,
    "mount": {
      "type": "reverse-sshfs",
      "9p": {
        "securityModel": "none",
        "protocolVersion": "9p2000.L",
        "msizeInKB": 128,
        "cacheMode": "mmap"
      }
    },
    "networkingTunnel": false
  }
}

が、true にするだけのフラグは、元に戻せない気配がしますね。。。

❯ rdctl set \
          --experimental.virtual-machine.socket-vmnet \
          --experimental.virtual-machine.use-rosetta
Status: no changes necessary.
❯ rdctl list-settings | jq '.experimental'
{
  "virtualMachine": {
    "type": "qemu",
    "useRosetta": true,
    "socketVMNet": true,
    "mount": {
      "type": "reverse-sshfs",
      "9p": {
        "securityModel": "none",
        "protocolVersion": "9p2000.L",
        "msizeInKB": 128,
        "cacheMode": "mmap"
      }
    },
    "networkingTunnel": false
  }
}

ファクトリーリセットやるしかなさそうです。乱暴ですが。

❯ rdctl factory-reset

Lima でやると

Lima でも同じことができます。YAML手作成が必要なのはダルいです。。。

https://gist.github.com/sasasin/bb70fe46b8f7f759558909f7b1c1f986

Docker Desktop でやると

Docker Desktop は、GUIの設定画面でチェックを付け外しで調整できるようです。

https://docs.docker.com/desktop/settings/mac/

Discussion

Suzuki ShinnosukeSuzuki Shinnosuke

Rancher Desktop 1.10.0 を見たら、GUIの設定画面で変更できるようになってました