WSL2でDockerを動かしてみたメモ

こんにちわ。

今日は、WSL2でDockerを動かしてみました。
動かしたときの、メモです。(雑) 

まず、WSL2の環境を整えていきたいと思います。
Ubuntuを入れてみたいと思います。  

■参考にした記事

WSLをインストールしてみます。最初に、PowerShell

wsl --install

と打ってみましたが、なんだかインストールされなかったので、

wsl --install -d Ubuntu

と打って、インストールしました。

確認します。

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         1

WSL2ではなくWSLのようです。WSL2にしたいのでWSL2にします。

wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

WSL2になったようです。

インストール時にWSL2になるようにするには、 下記コマンドを実行してデフォルト設定をしておかなければならなかったようです。

wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
この操作を正しく終了しました。

で、

wsl

と打ち、無事Ubuntuに入れることができました。

続いて、パッケージのダウンロード元を日本に変更しました。

# バックアップを取っておく
sudo cp -Rp /etc/apt/sources.list /etc/apt/sources.list.org

sudo sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
sudo sed -i 's/\/\/us.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
sudo sed -i 's/\/\/fr.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list

とりあえず下記コマンドでいろいろアプデしました。

sudo apt update
sudo apt upgrade

WSL2はここまで。

systemdが使えないっぽいです。

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

なので、systemdが使えるようにgenieを入れてみたいと思います。

■参考にした記事

最初にREADMEページを全部読んでください、とのこと。
'`ィ (゚д゚)/ (読めない)
UbuntuなのでDebianの部分を読んでみます。

いろいろパッケージをインストールしてくださいとのことなので、インストールします。

sudo apt install -y daemonize dbus gawk libc6 policykit-1 python3 python3-pip systemd systemd-container

wsl-translinux リポジトリからインストールしないといけないものもあるっぽいので、
参考ページに倣ってインストールします。

■参考にした記事

# rootになる
sudo -s

apt install lsb-release

wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
EOF

apt update
apt upgrade
apt autoremove

# rootを抜ける
exit

genieをインストールします。

sudo apt install -y systemd-genie

genieを、実行してみます。

genie -s

ぴえん、systemd-remount-fs.serviceとmultipathd.socketが失敗したようです。
下記記事を読んで、解決しようと思います。

■参考にした記事

rootパーティションラベルにcloudimg-rootfsを貼ります。
rootパーティションは/dev/sdbでしたので、

sudo e2label /dev/sdb cloudimg-rootfs
sudo systemctl restart systemd-remount-fs.service

■参考にした記事

multipathd.socketは非対応らしいのでdisableします。

sudo systemctl disable multipathd.socket
sudo systemctl restart multipathd.socket

statusを確認してみましょう。

sudo systemctl status

runnig、したっぽい?

ps aux

PID1がsystemdになったのでOKっぽい?

genieはここまで。

Dockerを入れていきます。

■参考にした記事

インストールのコマンドをそのまま参考。 インストールできたと思ったので、hello-worldしてみました。

docker run hello-world

Got permission denied while trying to connect to the Docker daemon socket と怒られました。

権限等を追加しました。
■参考にした記事

もう一回

docker run hello-world

しました。

hello-worldできました。

感想

いろいろ設定しないといけないので大変でした。
でも、調べながらでなんとかなりました!

終わり。