● はじめに

systemdがpid1で起動しない問題が原因で、前回は前編としていました。
原因について調査したところ、WSL2の仕様として、linux起動時にsystemdではなくinitを利用するようになっており、pid1がsystemdではなくinitに取られてしまっているようでした。

問題を解決するために、genieというWSL2上のLinuxでpid1でsystemdを起動させるツールの導入についても試しましたが、CentOS8のイメージが非公式版(現状WSL2で公式版の)である事等が原因で、genieも正しく動作せず、systemdをpid1で動作させる事ができませんでした。

今後、WSL2に対応したRedhat公式版のCentOS8が用意される等あれば再度挑戦していきます。しかし、前回を(1)としてしまった以上、ここでおしまいという訳にもいかないので、せめてUbuntuでDockerを動作させてHelloWorldを動作させたいと思います。

● UbuntuでのDockerの導入とHello-worldの実行

1.Dockerのインストール

UbuntuではCentOS8とは異なり、特に問題なく以下の通りDockerの導入を行う事ができます。

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
# sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable”
# sudo apt update && sudo apt install -y docker-ce

2.dockerデーモン起動

CentOS8ではここが難しく、結局解決できなかった部分でした。

# sudo service docker start

3.docker loginする

最初環境作成するときに忘れがちですが、忘れないようにしてください。

# sudo service docker start

4.Docker runでhello-worldのイメージを取得して実行する

# docker run hello-world

● 最後に

Ubuntuで導入した所大体30分程度でHelloWorldの実行までこぎつけることができました。
今回の敗因としてはCentOS8の公式版がなかったこと(だからこそやりたかったのだけど)、WSL2ではSystemdの動作がサポートされていない、という2点でした。
今後この2点が解決されないか情報収集を続けていきますので、解決され次第解決編としてWSL2onCentOS8でPodmanを使ってみたいと思います。
また、podmanの入門も兼ねて次回はGCPかAWSでCentOS8のインスタンスを立てて、そちらでpodmanを動作させていきます。