Docker Desktop VMハング時の復旧方法
症状
docker psやdocker compose upが極端に遅い、またはハングする- Docker Desktopが起動しても応答しない
- コンテナの起動がWARN表示で止まる
原因の特定
バックエンドログを確認する:
tail -50 ~/Library/Containers/com.docker.docker/Data/log/host/com.docker.backend.log
以下のようなログが出ていればVMがハングしている:
still waiting for linux/virtualization-framework init control API to respond after 516h55m...
context deadline exceeded
virtualization-framework のinit APIが長時間応答しない状態で、再インストールしても古いVMデータが残っていると同じ状態が続く。
復旧手順
1. 全Dockerプロセスを強制終了
killall -9 com.docker.backend com.docker.hyperkit com.docker.driver.amd64-linux Docker com.docker.vmnetd 2>/dev/null
pkill -9 -f "Docker.app" 2>/dev/null
古いdockerプロセスが残っている場合もまとめて殺す:
# 例: 古いMCPサーバー等のdocker runプロセス
pkill -9 -f "docker run" 2>/dev/null
2. 壊れたVMデータを削除
rm -rf ~/Library/Containers/com.docker.docker/Data/vms
これによりVMが新規作成される。既存のコンテナやイメージは消えるが、docker-compose.ymlがあれば再pullで復元できる。
3. Docker Desktopを再起動
open -a "Docker Desktop"
起動完了まで1〜2分待ち、docker ps が正常に返ることを確認する。
補足
~/.dockerの削除も有効な場合がある(レジストリ認証情報の再ログインが必要になる)ps aux | grep dockerでCPU使用率が異常に高いプロセスがないか確認するとよい- Docker Desktopの再インストールだけでは
~/Library/Containers/com.docker.docker/Data/配下のデータは残るため、VM関連の問題は解決しないことがある