久々にwsl上でdocker起動しようとしたら動かなかったので対策をメモ
環境
ホストOS: Windows10
wsl上のOS: Ubuntu 20.04
現象
wslを立ち上げてdockerを起動する
$ sudo service docker start
* Starting Docker: docker
起動したかと思いきや確認すると起動してない
sudo service docker status
* Docker is not running
logを確認する
なんかErrorでてる
cat /var/log/docker.log
time="2022-06-30T16:46:34.468361900+09:00" level=warning msg="grpc: addrConn.createTransport failed to connect to {unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}. Err :connection error: desc = \"transport: Error while dialing dial unix:///var/run/docker/containerd/containerd.sock: timeout\". Reconnecting..." module=grpc
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.4 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to iからmod?)
Perhaps iptables or your kernel needs to be upgraded.
(exit status 3)
原因
もしやと思ったがどうやらWSL2が更新されておらず、1のままらしい
PowerShellで
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 1
対処
PowerShellで以下を実行し、バージョンを2に切り替えようとするもできない
wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
下記から wsl_update_x64.msiを入手してインストール
https://docs.microsoft.com/en-US/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
再びやってみる
wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
いけた!
この状態でもう一度wslから起動してみる
$ sudo service docker start
* Starting Docker: docker
$ sudo service docker status
* Docker is running
うごいたー