Open5

Docker DesktopからRancher Desktopに乗り換えて、やっぱりDocker Desktopに戻った話

harapekoharapeko

結論

  • docker desktopの方がNuxtコンパイル速度早く、docker desktopに戻りました
    • アプリケーションの何を動作させるかで相性があるのかもしれません(要調査
  • 現在のRancher Desktopは再起動の度にk8sを停止させるのが手間でした
  • limaのFilesystem Shareringが改善されたらまた試したいです
harapekoharapeko

インストール

docker desktopを削除する

$ brew uninstall --cask docker

Rancher Desktopをインストールする

$ brew install --cask rancher

起動時にk8sのバージョン、Container Runtimeを聞かれる

dockerdを選択

dockerdを選択すればよいだろう

メモリ8GB、CPU4

公式にメモリ8GB、CPU4推奨とあるのでそのようにしてみる

現在は、docker composeを使う為に手を入れる必要がある

その前に以前docker desktopを使っていた人は、次のエラーがでるので、

2 errors occurred:
	* error listing credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH, out: ``
	* error listing credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH, out: ``

ごっそり削除しておいたほうがよさそう

$ rm -fr ~/.docker

Q: I can no longer run docker compose after installing Rancher Desktop and uninstalling Docker Desktop, what happened? - FAQ | Rancher Desktop Docs

$ cd /tmp
$ mkdir dc-work
$ cd dc-work
$ curl -o docker-compose -kL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-darwin-x86_64
$ chmod +x docker-compose
$ mkdir -p ~/.docker/cli-plugins/
$ mv docker-compose ~/.docker/cli-plugins/
$ cd ..
$ rmdir dc-work

docker composeがバンドルされるようになったらまた、~/.dockerを削除する日が来るかもしれない?

また、kubeを無効にしてリソースを節約する

Q: I don't need the Kubernetes cluster deployed by Rancher Desktop, how do I disable it to save resources? - FAQ | Rancher Desktop Docs

$ kubectl config use-context rancher-desktop
$ kubectl delete node lima-rancher-desktop

現在、毎起動これを打たないと停止できないぽい(手間

harapekoharapeko

メモリ消費多い?

※前者Rancher Desktopは再起動前に見たものなので正確な比較ではない
Rancher Desktop
Rancher Desktop
Docker Desktop
Docker Desktop

harapekoharapeko

コンパイルが遅い問題

ファイル編集するとNuxtのコンパイルが走るが、Rancherでは10%で停止して少し待ってからコンパイルが動作する感じで、体感で明らかにDocker Desktopより遅いと感じました(体感で明らかだったので計測せず)

調べた知見たち

M1 Pro + Docker for Macが遅い

バインドマウントでホスト側のディレクトリをコンテナと共有する際、ホスト側で変更した変更がコンテナへ反映されるまでに1-2秒かかることがある。Limaはファイル同期の仕組みにreverse sshfsが使われており、これが問題とされてる。今後9pかsambaへの移行が検討されており、現状は未解決。

Filesystem Sharing

macOSのファイルディスクリプタの上限の引き上げ - Docker on Limaで脱Docker Desktop for Mac

macOSとLimaは、現バージョンではSSHFSでファイル共有を行っています。その関係で、Docker内でのファイル操作であってもmacOS側でもファイルアクセスが行われるため、ファイルディスクリプタの上限に引っかかりやすくなっています(macOSはデフォルトで256が上限)。

検証時は、Dockerコンテナ内でsprite画像を生成した際に、途中で Operation not permitted : open というエラーが発生しました。まさかこのエラー内容からmacOS側のファイルディスクリプタの上限に引っかかってるとは思わず、原因の特定にかなり苦労しました…。

環境やアプリケーションの特性にもよりますが、SSHFSを利用している関係からか、パフォーマンス面はDocker Desktop for Macよりも劣っていました。将来的には9pやSambaへの切り替えも計画しているようなので、そのあたりが対応されれば改善されるかもしれません。

  • Operation not permitted : openは発生しなかった
  • ファイルディスクリプタの上限引き上げも効果はなし
harapekoharapeko

Docker Desktopに戻す

$ rm -fr ~/.docker
$ brew unsintall --cask rancher
$ brew install --cask docker

戻して同じようなファイル編集をしたらコンパイルが一瞬でした。
とはいえ、ずっと起動して、ブラウザタブを容赦なく開いていると重くなるので、M1Xにグレードアップしたくなりました。(パワーで解決