WSL2で急にdockerが起動しなくなった

2024/07/03に公開

開発環境

  • windows 10 Enterprice
  • docker
  • ubuntu

WSL2で急にdockerが起動しなくなった

ある日windowsをアップデートした際にdokcerk起動しようとしたが、起動しなくなった

$ sudo service docker start
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

メッセージに従い systemctl status docker.serviceコマンドを打つも特にヒントを得られず

原因

  1. docker実行中のプロセスに関する情報が格納された「pidファイル」が意図せず残っているせいで上手く起動できなかった。
  2. dockerデーモンが起動時にタイムアウトしてしまっていた

色々調べてとりあえずdockerデーモンでデバッグ情報を出してみると

$ sudo dockerd --debug
INFO Starting up
failed to start daemon, ensure docker is not running or delete /var/run/docker.pid: process with PID 5891 is still running

上記エラーに従い下記実行

$ sudo rm /var/run/docker.pid

pidファイルを削除が変わらずエラー

$ sudo service docker start
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

再度dockerデーモンでデバッグ情報を出力すると、エラーメッセージが変わりデーモン起動の際にタイムアウトしていた

$ sudo dockerd --debug
...割愛
failed to start daemon: error while opening volume store metadata database (/var/lib/docker/volumes/metadata.db): timeout

https://stackoverflow.com/questions/43537790/docker-fails-to-start-due-to-volume-store-metadata-database-timeout
そこで上記stackoverflowを参考にdockerのプロセスとコンテナを強制終了する

$ ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh 

すると無事dockerが起動することに成功

$ sudo service docker start
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xeu docker.service" for details.

おわりに

多分ですが、docker起動中に変なタイミングで再起動等を行った結果、前回のプロセス等が残ってしまい
整合性が取れなくてタイムアウトしてしまったぽいです。
とりあえず動いてくれてよかった

Discussion