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関連の問題は解決しないことがある
This post is licensed under CC BY 4.0 by the author.