2024.04.20.追記
/etc/wsl.conf の設定を変更することで、以下よりもスマートに対応できることがわかったので、こちらの方法を推奨する。
環境
- Windows11
- WSL2
- Ubuntu22
- docker-ce
コンテキスト
WSL2上のUbuntu22を起動の際にdockerdを自動起動したい。
しかし、WSL2はsystemctlではなくsysvinitのため、sudo systemctl enable docker 的なことができない。
参考:
解決方法:
~/.bashrc に以下エントリを追加。
if [ $(service docker status | awk '{print $4}') = "not" ]; then
sudo service docker start > /dev/null
fi
これだけだと、WSL2起動時に毎回PWの入力を求められて面倒なので、
/etc/sudoers にエントリを追加する。
(1) sudo visudo
(2) 以下の個所の値を %sudo ALL=(ALL:ALL) NOPASSWD:ALL に変更する。( NOPASSWD:ALL を追記する)

(3) Ctrl + s で編集内容を保存、 Ctrl + x でnanoエディタを終了。
※sudoersの文法的に不正な編集をすると、このタイミングで以下のメッセージが出力されるので、e を入力してエラー箇所を再度修正する。
>>> /etc/sudoers: syntax error near line xx <<< What now?
参考: