
WSL-UbuntuでDockerを起動時に動かす
Docker Desktopから移行してきたり、開発環境をUbuntuに統一しようとしているがDockerが起動時に動くように設定できずにお困りのWindowsユーザー向け。
この記事を読めば、対処法とその理由について紹介していますので、毎回「sudo service docker start 」を手で動かす必要がなくなります。
目次
WSL-UbuntuでDockerを起動時に動かす
では早速対処法です。なお、本記事ではWSL2を使用しております。
wsl.confにDocker起動コマンドを書く
WSL-Ubuntuの/etc/wsl.confに以下を記述します。
bootとcommandという単語からわかる通り、WSL用の起動コマンドですね。
なお、私の環境ではこのファイルが無かったので作成しました。
WSL再起動でDockerの起動を確認
windows コンソールからWSLを停止させ
再びUbuntuを起動させてみましょう。
でDockerが起動したことを確認できます。
今回はUbuntuで確認しているわけですが他のLinuxでも同様に対処できるはずです。
WSLの影響でsystemdが動かない
WSLのUbuntuだとサービスが動きません。結論systemdが動かないのが原因なのですが、理由を簡単に確認してみます。
先ほどのwsl.confに起動コマンドを書いていない状態だと
で
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
「Dockerに接続できないよ、サービスは起動してる?」と言われます。「sudo systemctl enable docker」で設定していてもです。
それならばと
でサービスを動かそうとすると
System has not been booted with systemd as init system (PID 1). Can't operate.
systemdが使いたいPID 1が使えない状態といわれます。
実際にPID 1を
で確認してみると

確かに占有されていますね。WSLが先につかってます。
まとめ
最後に簡単に振り返りましょう。
- 起動時にコマンドはwsl.confに記載する
- WSLの影響で起動時にサービスが立ち上がらない
dockerに限らず起動時に使いたいコマンドはwsl.confに記載していけばOKです。