Docker Desktop for Mac が完全にぶっ壊れた時の対処方法
#technology #Docker #Mac #AdventCalendar
この記事は はてなエンジニア Advent Calendar 2022 の49日目です。
皆さんは Docker Desktop が壊れたことがありますか? 僕はありません、がチームメンバーの Docker Desktop がハチャメチャにぶっ壊れたことはあります。
そもそも Docker Desktop とは、デスクトップ環境で Docker を使う為のアプリケーションで、Linux では直接 Docker エンジンを、それ以外の環境では仮想マシンの上で専用の Linux を立ち上げてそこで Docker エンジンを動かすようになっている。
Mac では仮想マシンのバックエンドを hypervisor.framework と virtualization.framework から選ぶことができ、virtualization.framework では VirtioFS による高速なファイル共有や Rosetta 2 による x86-64 エミュレーションなどの恩恵を受けることができる。
今回はチームメンバーが新しく Docker をセットアップするにあたり、セットアップの最後の段階で virtualization.framework を有効にした瞬間に完全に壊れてしまったため、どのようにして対処したのかをメモしておく。
元々 Intel Mac を使っていたが Apple Silicon Mac に乗り換えたらしく、その際にデータ移行をしたため古い Docker の残骸が残っていたっぽい。古い Docker は Intel Mac 用で、新しく Apple Silicon Mac 用に Docker を入れたのだが一部残骸が残っていたらしく、virtualization.framework を有効にした瞬間仮想マシン基盤がクラッシュするようになってしまった。
どうやらこういう壊れ方は本当に珍しいらしく、ググっても全然情報が出てこなかった。
困ったことにクラッシュ通知ウィンドウが邪魔で Docker Desktop のトラブルシューティング画面が操作できず、別な方法で初期化しなくてはなくなってしまった。しかし Docker.app を削除してインストールしなおしても駄目、消したあとに再起動しても駄目で、どうやら手動でファイルを削除して周る必要があるらしい。
色々探した結果、次のファイルとフォルダを消すことでほぼ完全に Docker Desktop を初期化できる事が分かった。
code:_
~/.docker
~/Library/Caches/com.docker.docker
~/Library/Containers/com.docker.docker
~/Library/Group Containers/group.com.docker
~/Library/Preferences/com.docker.docker.plist
/usr/local/lib/docker
Docker.app を削除した上で↑のファイルとフォルダを削除することで完全に Docker Desktop を初期化できた。
このあと Docker Desktop を再インストールすることで、無事に Docker Desktop が復活してくれた。良かった~
皆さんも Docker Desktop for Mac が壊れた時はお試しください!