◆ docker-ce を入れて iptables を legacy に切り替えて containerd と dockerd を起動すれば動く
◆ 面倒が多いので service コマンドで起動できる Ubuntu の方が楽
◆ AlmaLinux8 だと iptables-legacy パッケージがない
  ◆ iptables=false でなら動かせたけどネットにつながらない

あるディストリビューションのパッケージのデフォルト設定での動きを見たくて Docker を入れようとしたのですが AlmaLinux の WSL がストアに並んでたのでこっちにしてみました
バージョンは 9 です

Docker をインストールして動くようにするまでは Ubuntu より面倒でした
まずは Docker をインストールします

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce

Ubuntu なら service コマンドで起動できるのですが AlmaLinux では service コマンドで起動するためのスクリプトは用意されていません
なので systemd の設定ファイルから起動方法を見ます

/usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

...略

こんな感じで dockerd を実行すれば良いみたいです
ただ containerd に依存していてこのサービスも必要みたいです

同じように設定ファイルを見て containerd を起動するコマンドを実行します

sudo /usr/bin/containerd

このコマンドはフォアグラウンドで実行すると終了せず次のコマンドを実行できません
なんかエラーが出そうな気がしたので WSL ウィンドウを複数用意して各サービスはフォアグラウンドで実行してます

次に Docker を起動します
これもバックグラウンドで実行しないと終了しません

sudo /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

これで動いてくれると良かったのですがエラーになりました
systemd で動かさないなら fd:// を unix:// にすればいいという情報を見かけたので置き換えて実行

sudo /usr/bin/dockerd -H unix:// --containerd=/run/containerd/containerd.sock

これで次に進んだものの 今度はネットワークの初期化でエラーです
iptables コマンドに失敗してるみたいです
Ubuntu や Debian の WSL ディストリでもあった問題みたいなので iptables-legacy に切り替えます
デフォルトではインストールされていないのでインストールもします

sudo dnf install epel-release
sudo dnf install iptables-legacy
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

これでもう一度 dockerd を起動しようとすると成功でした

あとは適当にコンテナを動かしてみます

sudo docker run -it fedora

適当にいくつかコマンドを実行して問題なく動いてました
ネット接続も問題なくできました

まとめ

実行するコマンドのまとめです

初回準備
(ディストリビューションのインストール後に一回だけ実行)

sudo dnf install epel-release
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce iptables-legacy
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

Docker サービスの起動
(ディストリビューションの起動のたびに実行)

sudo /usr/bin/containerd > /dev/null 2>&1 &
sudo /usr/bin/dockerd -H unix:// --containerd=/run/containerd/containerd.sock > /dev/null 2>&1 &

AlmaLinux8

実は最初は AlmaLinux8 でやろうとしていました
基本は同じなのですが iptables-legacy のところでつまりました

AlmaLinux8 では iptables-legacy がありません
ググっていくつか試したのですが 結局解決できず諦めて

sudo /usr/bin/dockerd -H unix:// --containerd=/run/containerd/containerd.sock --iptables=false

として iptables を使わないようにしてました
これで一応 dockerd が起動できるのでコンテナを起動できるのですが iptables が無効だからかコンテナからインターネットに繋がりません

その後 AlmaLinux9 用のパッケージで iptables-legacy があるのを見つけて無理やり AlmaLinux8 に入れてみようとはしたものの案の定依存関係で色々問題が出て諦めました
WSL で AlmaLinux9 があればいいのにと思って検索したらあったのでそっちにしたという感じです

そもそも RHEL って Docker みたいなコンテナツールを作ってたはずですし RHEL 系ディストリビューションではそっちが推奨で Docker は使うことをあまり想定してないのかもしれませんね
使ってみた記事