WSL 2 (AlmaLinux 8) に dockerで 開発環境準備してみる

最近、docker desktop 以外でも開発環境作成できるようにしたいなと思い、AlmaLinux 8 でもdocker 環境を検証で作成してみました。その時の備忘録として残します。

# Docker をインストールしてみよう

まずはそのままではdocker をインストールすることができないので、レポジトリをインストールします
```
# repository のインストール
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# repository が入ったか確認
dnf repolist

# この表示があったらオッケー
docker-ce-stable                                        Docker CE Stable - x86_64
```

次に、docker-ce (Community Edition) をインストールします。
```
# この三つをインストール
sudo dnf install docker-ce docker-ce-cli containerd.io

# インストールされる者たち

Installing:
 containerd.io                    x86_64     1.6.28-3.1.el8                                  docker-ce-stable      35 M
 docker-ce                        x86_64     3:25.0.4-1.el8                                  docker-ce-stable      26 M
 docker-ce-cli                    x86_64     1:25.0.4-1.el8                                  docker-ce-stable     7.3 M
Installing dependencies:
 checkpolicy                      x86_64     2.9-1.el8                                       baseos               347 k
 container-selinux                noarch     2:2.221.0-1.module_el8.9.0+3717+81096349        appstream             68 k
 fuse-common                      x86_64     3.3.0-17.el8                                    baseos                21 k
 fuse-overlayfs                   x86_64     1.12-1.module_el8.9.0+3643+9234dc3b             appstream             69 k
 fuse3                            x86_64     3.3.0-17.el8                                    baseos                53 k
 fuse3-libs                       x86_64     3.3.0-17.el8                                    baseos                94 k
 iptables                         x86_64     1.8.5-10.el8_9                                  baseos               590 k
 kmod                             x86_64     25-19.el8                                       baseos               125 k
 libcgroup                        x86_64     0.41-19.el8                                     baseos                69 k
 libmnl                           x86_64     1.0.4-6.el8                                     baseos                30 k
 libnetfilter_conntrack           x86_64     1.0.6-5.el8                                     baseos                65 k
 libnfnetlink                     x86_64     1.0.1-13.el8                                    baseos                33 k
 libnftnl                         x86_64     1.2.2-3.el8                                     baseos                86 k
 libselinux-utils                 x86_64     2.9-8.el8                                       baseos               242 k
 libslirp                         x86_64     4.4.0-1.module_el8.9.0+3717+81096349            appstream             69 k
 policycoreutils                  x86_64     2.9-24.el8                                      baseos               376 k
 policycoreutils-python-utils     noarch     2.9-24.el8                                      baseos               253 k
 python3-audit                    x86_64     3.0.7-5.el8                                     baseos                86 k
 python3-libselinux               x86_64     2.9-8.el8                                       baseos               282 k
 python3-libsemanage              x86_64     2.9-9.el8_6                                     baseos               127 k
 python3-policycoreutils          noarch     2.9-24.el8                                      baseos               2.2 M
 python3-setools                  x86_64     4.3.0-5.el8                                     baseos               626 k
 rpm-plugin-selinux               x86_64     4.14.3-28.el8_9                                 baseos                77 k
 selinux-policy                   noarch     3.14.3-128.el8_9.1                              baseos               663 k
 selinux-policy-targeted          noarch     3.14.3-128.el8_9.1                              baseos                15 M
 slirp4netns                      x86_64     1.2.1-1.module_el8.9.0+3643+9234dc3b            appstream             55 k
Installing weak dependencies:
 docker-buildx-plugin             x86_64     0.13.0-1.el8                                    docker-ce-stable      14 M
 docker-ce-rootless-extras        x86_64     25.0.4-1.el8                                    docker-ce-stable     5.0 M
 docker-compose-plugin            x86_64     2.24.7-1.el8                                    docker-ce-stable      13 M
Enabling module streams:
 container-tools                             rhel8
```

インストールされたか確認！
```
docker -v
=> docker のバージョン表示されたらオッケー
```

続いて、docker-compose を入れていきましょ！！

```
# docker-compose install
sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# インストールできたら、実行権限与えましょう
chmod +x /usr/local/bin/docker-compose

docker-compose --version

もし失敗したら、一回alma linux を閉じてあげて、開いてコマンドをうってみてください。
```

これで準備オッケー

# systemd が使えない？？？

docker のstatus を見てみると、、、、
```
systemctl status docker

うん？？
System has not been booted with systemd as init system (PID 1). Can't operate.
```

これはシンプルに systemd がPID 1 で起動していないらしいです。なんだそれ？？

```
vim /etc/wsl.conf

# 以下のように書いてあげてください
~~~~~~~~~~~~~~~~~
[boot]
systemd=true
~~~~~~~~~~~~~~~~~
```

そして、powershell からwsl --shutdown して再起動
そうすると systemd がPID 1 で起動していると思います。

docker も停止状態だけど、systemctl が使えてると思います！！！
```
systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com
```

一旦、開発環境の準備できました！！！
sudo 使うのめんどくさい人は、グループの調整とかもお勧めです！！

# まとめ
結構簡単にdocker 環境は作成できます。
開発環境は、ディレクトリを作成して、docker-compose (or docker compose)で環境作成してみてください。よいdocker day をお過ごしください。