Dockerが起動しなくて困った
$ docker ps
Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file specified.
事象 : Docker Desktopが「Docker is starting...」のままで起動しない
- 環境
- Windows 10 Pro バージョン22H2
- Docker version 20.10.22, build 3a2c30b
- Docker Desktop 4.16.3 (96739)
- WSL 2 Ubuntu
「Docker Desktopの再起動」「PCの再起動」をしても状況が変わらない・・・Errorダイアログの内容もよくわからない・・・
Errorダイアログの内容
Docker.Core.HttpBadResponseException:
{"message":"1 error occurred:\n\t* starting WSL integration service: synchronising agents: starting added distros: 1 error occurred:\n\t* waiting for WSL integration for Ubuntu: timed out while polling for WSL distro integration to become ready in \"Ubuntu\"\n\n\n\n"}
場所 Docker.Core.GoBackend.GoBackendClient.<PostNoBodyWithError>d__19.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Core\GoBackend\GoBackendClient.cs:行 226
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__11.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\LinuxWSL2Engine.cs:行 54
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:行 29
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__6.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:行 91
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__6.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:行 118
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 Docker.ApiServices.StateMachines.EngineStateMachine.<StartAsync>d__15.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\EngineStateMachine.cs:行 72
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
場所 Docker.Engines.Engines.<StartAsync>d__23.MoveNext() 場所 C:\workspaces\4.16.x\src\github.com\docker\pinata\win\src\Docker.Engines\Engines.cs:行 109
原因 : 不明
WSL 2でなんかうまくいっていないらしいが・・・能力の不足でいまいち理解できない・・・。
Docker Desktop Will Not Start · Issue #13184 · docker/for-win
対応1 : WSL 2を止めてDocker Desktopを再起動する
-
wsl --shutdown
で仮想マシンを終了- 注意 : コンテナはきれいさっぱり消える
- Docker Desktopを再起動する
- ここで起動するようになった
-
docker-compose up -d --no-recreate --build
でコンテナを再作成する- 「ERROR: docker endpoint for "default" not found」になった場合の対応
- Visual Studio Codeの拡張機能で作ったコンテナが「Dev Containers: Open Folder in Container...」から起動しない・・・ログを見ると「ERROR: docker endpoint for "default" not found」と出力されていた・・・そんな時の対応方法
- 対応 :
~/.docker/contexts/meta/{長い英数字}/meta.json
を削除してからコンテナを起動する - 参考 : 【VSCode・docker】「docker endpoint for "default" not found」を解決する! - BFT名古屋 TECH BLOG
- 「ERROR: docker endpoint for "default" not found」になった場合の対応
# WSL 2を止める
$ wsl --shutdown
# コンテナはきれいさっぱり消える
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 地道にコンテナを作り直す
$ docker-compose up -d --no-recreate --build
Creating network "docker_default" with the default driver
...省略...
対応2 : Doccker Desktopをアップデートする
今日もDockerが起動しなくて困る。
-
wsl --shutdown
で仮想マシンを終了- コンテナは削除されなかった(消えることもあるので注意)
- Docker Desktopを再起動する
- この時点ではまだ
Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file specified.
になる
- この時点ではまだ
- Doccker Desktopの[Software updates]にアップデートが来ていたので「Docker Desktop 4.17.0」へアップデートする
- 正常に起動する