marukot-chの日記

弱小SEの雑記です

WSL2(Windows10)でdockerデーモンが起動しない問題の対処(volume store metadata database timeout)

概要

  • Windows10のWSL2で動作しているdockerデーモンが起動しない事象があった(詳細なバージョンは以下)
  • /var/run/docker.pidを削除の上、ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo shで直った

事象

dockerデーモンが起動しない
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  • 詳細ログを確認すると、なんか/var/run/docker.pidがあるけど起動してない的に思えたのでファイル削除
$ journalctl -xeu docker.service
Dec 07 09:38:53 xxxxxxx dockerd[37044]: time="2023-12-07T09:38:53.430712328+09:00" level=info msg="2023-12-07T09:38:53.430712328+09:00" level=info msg="Starting up"
    Dec 07 09:38:53 xxxxxxx dockerd[37044]: failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
    Dec 07 09:38:53 xxxxxxx systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
    ░░ Subject: Unit process exited
---
$ sudo rm /var/run/docker.pid
pid消したけど直らない
$ sudo systemctl start docker
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.
---
$ journalctl -xeu docker.service
Dec 07 09:52:09 xxxxxxx dockerd[53430]: failed to start daemon: error while opening volume store metadata database (/var/lib/docker/volumes/metadata.db): timeout
 Dec 07 09:52:09 xxxxxxx systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
直った対応
  • 事前にps axf | grep docker | grep -v grepでdockerのプロセスいっぱいおるなぁと確認してから実行
ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh
  • "volume store metadata database timeout"で検索して見つけた記事*1による対処
  • 以下も亜種

stackoverflow.com

  • 上記stack overflowで参照していたIssue(DockerのOSSリポジトリ、mobyのやつ)

github.com

プロセス確認とdockerデーモンの起動
$ ps axf | grep docker | grep -v grep
$ sudo systemctl start docker
$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                                  PORTS     NAMES

バージョン

Windows&WSL2
PS C:\Users\maruk> wsl.exe --version
WSL バージョン: 2.0.9.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22621.2715
Docker
$ docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:47:01 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:47:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.18
  GitCommit:        2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

補足

アイキャッチ画像生成
  • Bing AIのImage Creatorで作成(DALL·E 3によるもの)

  • 指示文章

    • アニメチックにデフォルメされたDockerのクジラが泣いているところの画像を生成してください。
    • Dockerはコンテナ技術のデファクトスタンダードであり、くじらが泣いている理由はDocker Daemonが起動できないからです。

Daemonが起動できず泣いているDockerクジラ