Docker DesktopからRancher Desktopに乗り換えて、やっぱりDocker Desktopに戻った話
結論
- docker desktopの方がNuxtコンパイル速度早く、docker desktopに戻りました
- アプリケーションの何を動作させるかで相性があるのかもしれません(要調査
- 現在のRancher Desktopは再起動の度にk8sを停止させるのが手間でした
- limaのFilesystem Shareringが改善されたらまた試したいです
インストール
docker desktopを削除する
$ brew uninstall --cask docker
Rancher Desktopをインストールする
$ brew install --cask rancher
起動時にk8sのバージョン、Container Runtimeを聞かれる
dockerdを選択すればよいだろう
公式にメモリ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
$ 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を無効にしてリソースを節約する
$ kubectl config use-context rancher-desktop
$ kubectl delete node lima-rancher-desktop
現在、毎起動これを打たないと停止できないぽい(手間
メモリ消費多い?
※前者Rancher Desktopは再起動前に見たものなので正確な比較ではない
Rancher Desktop
Docker Desktop
コンパイルが遅い問題
ファイル編集するとNuxtのコンパイルが走るが、Rancherでは10%で停止して少し待ってからコンパイルが動作する感じで、体感で明らかにDocker Desktopより遅いと感じました(体感で明らかだったので計測せず)
調べた知見たち
バインドマウントでホスト側のディレクトリをコンテナと共有する際、ホスト側で変更した変更がコンテナへ反映されるまでに1-2秒かかることがある。Limaはファイル同期の仕組みにreverse sshfsが使われており、これが問題とされてる。今後9pかsambaへの移行が検討されており、現状は未解決。
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は発生しなかった
- ファイルディスクリプタの上限引き上げも効果はなし
Docker Desktopに戻す
$ rm -fr ~/.docker
$ brew unsintall --cask rancher
$ brew install --cask docker
戻して同じようなファイル編集をしたらコンパイルが一瞬でした。
とはいえ、ずっと起動して、ブラウザタブを容赦なく開いていると重くなるので、M1Xにグレードアップしたくなりました。(パワーで解決