Rancher Desktop v1.8.0 で Rosetta 2 & VirtioFS を有効化する
祝
出ていた。めでたい。
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 がそのあたり利用するよう頑張ったことで、実現されてます。
前準備
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手作成が必要なのはダルいです。。。
Docker Desktop でやると
Docker Desktop は、GUIの設定画面でチェックを付け外しで調整できるようです。
Discussion
Rancher Desktop 1.10.0 を見たら、GUIの設定画面で変更できるようになってました