mDNSでWSLのLinux側からPodmanを利用する方法: ポッドマンが倒せない(6)
Podmanサーバを本当にサーバーにする
関連記事:
WSLのhostnameでLinux同士をSSH接続する方法
Distrodを使ってWSLでsystemdを動かす
ポッドマンが倒せないシリーズ過去記事
WSLにDocker代替のPodmanを入れてみる: ポッドマンが倒せない(1)
WSL2上のリモートPodmanにWindowsから接続: ポッドマンが倒せない(2)
WSLサポートしたpodmanV4: ポッドマンが倒せない(3)
Podman Desktopを試す: ポッドマンが倒せない(4)
WSLのLinux側からPodmanを利用する方法: ポッドマンが倒せない(5)
[mDNSでWSLのLinux側からPodmanを利用する方法: ポッドマンが倒せない(6)]
前回npiperelayでリモートPodmanに接続する記事を書いた。
npiperelayで接続する方法も用途を限定すればいけるが、
コマンドがwindowsを経由するので動作の遅さが目立つ。
ところで、以前の記事でmDNSによるLinux→Linuxの接続を実現した。
それもこれもPodmanのLinux→Linux接続を可能にするため。
この手法ならWindows側の実行プログラムを使うことなく自然な接続が出来るはず。
早速やってみよう。
例によってインストールから記述するので適当に読み飛ばしてほしい。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
準備
今回はPodmanをWindowsにインストールしたときに生成されるfedoraインスタンスをサーバーとして用いる
クライアントを Ubuntu
, fedoraインスタンスを Podman Server
とすると
クライアントのUbuntu22.04(jammy)を用意
予め必要なパッケージも入れておく。
ubuntu2204.exe
sudo apt update && sudo apt upgrade -y
sudo apt-get install btrfs-progs crun git golang-go go-md2man iptables libassuan-dev libbtrfs-dev libc6-dev libdevmapper-dev libglib2.0-dev libgpgme-dev libgpg-error-dev libprotobuf-dev libprotobuf-c-dev libseccomp-dev libselinux1-dev libsystemd-dev pkg-config uidmap unzip
Windowsにpodmanをインストール
PodmanおよびPodman Desktopをインストールし、
Podmanを起動しておく。
winget install -e --id RedHat.Podman
podman machine init
podman machine start
winget install -e --id RedHat.Podman-Desktop
wsl -l -v
NAME STATE VERSION
Ubuntu-22.04 Stopped 2
podman-machine-default Running 2
コネクションを確認する
PS C:\Users\magic> podman system connection list
Name URI Identity Default
podman-machine-default ssh://user@localhost:60660/run/user/1000/podman/podman.sock C:\Users\doco\.ssh\podman-machine-default true
podman-machine-default-root ssh://root@localhost:60660/run/podman/podman.sock C:\Users\doco\.ssh\podman-machine-default false
(._.)φ ポート番号は60660
Podmanサーバーを設定
podman-machine-defaultインスタンスを設定する
OSがFedoraなのでちょっと扱いにくいかもしれないが、
aptと同じdnfというコマンドがあるので、
それを使って必要なものをインストールしていく。
wsl -d podman-machine-default
dnf update -y
wsl.confを設置
ホスト名 podmanhost
を設定する。
[network]
hostname=podmanhost
avahiをインストール
wsl -d podman-machine-default
dnf install -y avahi
Podmanサーバー再起動
Powershellに戻ってPodmanサーバーを再起動
wsl -t podman-machine-default; wsl -d podman-machine-default
この時点でhostnameでの名前解決は完了している。
クライアント側にPodmanを設定
Podmanのインストール
Ubuntu側にPodmanをインストール。
Podman4を使うためにリポジトリの登録から。
curl -fsSL https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_22.04/Release.key| gpg --dearmor | sudo tee /etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg] https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_$(lsb_release -rs)/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list > /dev/null
続いてPodmanのインストール
sudo apt update
sudo apt install -y podman
podman --version
podman version 4.3.1
リモート接続設定
Podmanサーバーとリモート接続する
SSH経由のためSSHの設定も必要でキー RSA
ではなく ED25519
を使用する。
ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
・・・
| +.*B..=.. |
| .+E++.++ |
+----[SHA256]-----+
cat ~/.ssh/id_ed25519.pub | wsl.exe -d podman-machine-default -u user -e tee -a .ssh/authorized_keys
リモートログイン確認
ssh user@podmanhost.local -p 60660
Last failed login: Wed Nov 23 13:38:28 JST 2022 from 172.20.43.74 on ssh:notty
There were 3 failed login attempts since the last successful login.
[user@podmanhost ~]$ exit
(・∀・) SSH接続ヨシ!
次はPodmanの接続設定
上記でWindows上の接続を確認したがそれを参考にポートやPathを設定する
コマンドは podman system connection list
podman system connection add podman --identity ~/.ssh/id_ed25519 ssh://user@podmanhost.local:60660/run/user/1000/podman/podman.sock
podman system connection list
Name URI Identity Default
podman ssh://user@podmanhost:60660/run/user/1000/podman/podman.sock /home/dozo/.ssh/id_ed25519 true
podman -r images
(・∀・)(・∀・) Podman接続ヨシ!
Podmanにアクセス
さて、長々と書いたがいよいよPodmanを使ってみよう。
podman -r run quay.io/podman/hello
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
・・・
Storing signatures
!... Hello Podman World ...!
.--"--.
/ - - \
/ (O) (O) \
~~~| -=(,Y,)=- |
.---. /` \ |~~
~/ o o \~~~~.----. ~~
| =(X)= |~ / (O (O) \
~~~~~~~ ~| =(Y_)=- |
~~~~ ~~~| U |~~
Project: https://github.com/containers/podman
Website: https://podman.io
Documents: https://docs.podman.io
Twitter: @Podman_io
さてPodman Desktopで確認してみよう。

Podman Desktop
(^_^)b 同期取れてる!
------------------- ↓ 後書はここから ↓-------------------
ここまでやる必要ある?
といわれるとなんとも言いがたいけど個人的にはこの環境に満足している。
Linux上にPodman Desktopを入れるっていう手もあるから、
そっちの方が手っ取り早いかもしれないが、
多分Fedoraでしか出来ないんじゃないかなと。
Discussion