macのdockerが遅いのは周知の事実ですがVirtioFSが速いよ!って話を聞いたので使ってみました。
設定画面から簡単に変えられるのですが、そんな気軽な設定変更がまさか半日docker使えなくなることになるとは・・・
今回は同じような方が居たときのために復旧手順の1例として残しておきます。
gRPC FUSE
からVirtioFS
に変更してApply&Restartするだけで使えるようになるのですが、ずーっとローディング画面が出続けるという問題に遭遇しました。(4時間ぐらい)
さすがに遅いし明日の仕事に差し障りある、ということで以下を実施してみました。
- 画面上からClean/Purge dataを実行
- An unexpected error occurredで動かない
- 画面上からReset to factory defaultsを実行
- やはりAn unexpected error occurredで動かない
- OS再起動
- dockerを起動した際に、同じくローディング状態になって進まない
- アプリを削除して、再インストールする
- dockerのデータが残っているのか、同じ状態になる
何やっても駄目で結構焦りました。
Resetしようとしたことから分かる通り、ImageやVolumesは諦めました。
とはいってもアプリ開発で使っているDBデータなどは永続化していることが多いので、自分の場合はそんなに被害は大きくないことに気づきましたので、手動での削除方法をしらべて実施することにしました。
その手順について記載します。
念の為言っておきますが、自己責任でよろしくお願いいたします
# 1. docker系のプロセスは全部落としておく
# 2. com.docker.xxxの2つを一旦バックアップ(消すの怖かったので。。。
mkdir ~/docker-backup
sudo mv ~/Library/Containers/com.docker.* ~/docker-backup
# 3. 以下を編集して、filesharingDirectoriesを空配列にする(記述をどこかにバックアップしておく
## "filesharingDirectories": [
## ],
vi ~/Library/Group\ Containers/group.com.docker/settings.json
上記実施後、dockerを起動すると正常に起動するようになりました。
Imageなどは全部飛んでしまいましたが、上記で書いたとおりdocker上で使っていたデータは永続化していたりするのでそんなに被害はありませんでした。
再構築でnpm@latest的な記述が今実行するとバージョン不一致でエラーになるなど、最新状態での構築見直しになったので良かったかなとポジティブに考えるようにしています。
これで、ようやく念願のVirtioFSも使えるようになりました。
参考) https://stackoverflow.com/questions/69552636/cannot-launch-docker-desktop-for-mac