WSL2 systemd対応

systemdの有効化

/etc/wsl.conf ファイルを新規に作成し、下記の記載を行いました。

[boot]
systemd=true

dockerサービスの起動確認

Linux(Ubuntu)のシェルから下記を実行して確認しました。

sudo service docker status
sudo systemctl status docker

なお、設定を変更した後は、PowerShell から下記のようにWSLをシャットダウンしました。

wsl --shutdown

systemd有効化前

ここでは以前の自動起動設定は無効にして試しました。 dockerサービスは自動起動されません。また、systemdが無効となっていることがわかります。

~$ sudo service docker status
 * Docker is not running
~$ sudo systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

systemd有効化後

どちらも同じ結果になりました。(serviceコマンドを実行するとsystemctl相当の処理が実行されるようになっているようです) systemdが有効化されており、dockerサービスが自動起動されています。

~$ sudo service docker status
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-12-28 22:43:38 JST; 1min 53s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 391 (dockerd)
      Tasks: 13
     Memory: 96.0M
     CGroup: /system.slice/docker.service
             └─391 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224143400+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_bps_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224148100+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.read_iops_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224152400+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_iops_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224630200+09:00" level=info msg="Loading containers: start."
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.358807600+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon op>
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.408680800+09:00" level=info msg="Loading containers: done."
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.486661300+09:00" level=info msg="Docker daemon" commit=3056208 graphdriver(s)=overlay2 version=20.10.21
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.487047100+09:00" level=info msg="Daemon has completed initialization"
Dec 28 22:43:38 rockers systemd[1]: Started Docker Application Container Engine.
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.519619500+09:00" level=info msg="API listen on /run/docker.sock"
~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-12-28 22:43:38 JST; 1min 28s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 391 (dockerd)
      Tasks: 13
     Memory: 96.0M
     CGroup: /system.slice/docker.service
             └─391 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224143400+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_bps_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224148100+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.read_iops_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224152400+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_iops_device"
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.224630200+09:00" level=info msg="Loading containers: start."
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.358807600+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon op>
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.408680800+09:00" level=info msg="Loading containers: done."
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.486661300+09:00" level=info msg="Docker daemon" commit=3056208 graphdriver(s)=overlay2 version=20.10.21
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.487047100+09:00" level=info msg="Daemon has completed initialization"
Dec 28 22:43:38 rockers systemd[1]: Started Docker Application Container Engine.
Dec 28 22:43:38 rockers dockerd[391]: time="2022-12-28T22:43:38.519619500+09:00" level=info msg="API listen on /run/docker.sock"

まとめ

WSL2でsystemd対応が行われており、設定によりsystemdが有効化することができます。 これによりdockerサービスが自動起動されることが確認できました。

WSLg の対応も合わせ、WSL2は、よりネイティブのLinux環境に近づきました。さらに活用が進みそうです。

Copied title and URL