WSLのLinux側からPodmanを利用する方法(2023)DockerDesktop代替を確立: ポッドマンが倒せない(7)
もっと簡単な方法があった
関連記事:
Podman Desktopを試す: ポッドマンが倒せない(4)
Distrodを使ってWSLでsystemdを動かす
ポッドマンが倒せないシリーズ過去記事
前回mDNS経由でPodmanにアクセスする方法を書いた。のだが。。。
改めてやってみると上手くいかなかったので記事を取り下げた。
(No.6は欠番行き)
そして、そこまで複雑にしなくてもいいことが分かったので、
記事化することにした。
構成は以下の通り(これは取り下げた記事と同じ)
メインで使うWSLクライアントを Ubuntu instance
、
podmanが生成するインスタンスを Podman instance
とすると
Ubuntu instance
とPodman instance
が別サーバーっぽい感覚になるのだが、
実はIPアドレスは共通。
(振り分けはポートでやってる?)
なので自身に割り当てられてるIPアドレスを設定すればリモートアクセスできるということになる。
( ゚Д゚;) な… 何を言ってるのか わからねーと思うが
一度以下のコマンド打ってみてほしい。
(ポート番号は本編を参照)
ssh user@$(hostname -I|tr -d " ") -P [port]
sshアクセスできるはず。
例によってインストールから行うので記事は長いが適当に読み飛ばしてほしい。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
準備
WindowsにPodmanとPodman Desktopをインストール
アプリインストーラーを使って
PodmanおよびPodman Desktopをインストールし、
Podmanを起動しておく。
winget install -e --id RedHat.Podman
winget install -e --id RedHat.Podman-Desktop
podman machine init
podman machine start
wsl -l -v
NAME STATE VERSION
podman-machine-default Running 2
ポートを確認しておく
podman system connection list
Name URI Identity Default podman-machine-default ssh://user@localhost:50626/run/user/1000/podman/podman.sock C:\Users\dozo\.ssh\podman-machine-default true
(._.)φ ポート番号は50626
クライアント側を用意
以下を参照のこと
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
上記はUbuntu用だが、
その他のdistroの場合はマニュアルを参照
続いてPodmanのインストール
sudo apt update
sudo apt install -y podman
podman --version
podman version 4.3.1
SSHリモート接続
Podmanインスタンスとリモート接続するためにSSHで接続する
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 --cd /home/user -e tee -a .ssh/authorized_keys
ssh-ed25519 AAAAC3Nza.....9y/fp2KM dozo@ubuntu
リモートログイン確認
ssh user@$(hostname -I|tr -d " ") -p 50626
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クライアント接続
あとはPodmanの設定にSSH接続情報を加える
podman system connection add podman -d --identity ~/.ssh/id_ed25519 ssh://user@$(hostname -I|tr -d " "):50626/run/user/1000/podman/podman.sock
podman system connection list
Name URI Identity Default
podman ssh://user@172.19.203.129:50626/run/user/1000/podman/podman.sock /home/dozo/.ssh/id_ed25519 true
(・∀・)(・∀・) 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 同期取れてる!
------------------- ↓ 後書はここから ↓-------------------
これでDocker Desktop代替は完成した気がする。
- Podmanインスタンスによる管理
- Windowsおよび各種インスタンスでのpodmanコマンド使用
- 各種インスタンスとの同期
- Windows GUI
すべて実現できている
docker composeはむしろPodを利用する感じになるかなと。
ログインシェルに登録
毎回接続情報を追加するのは面倒なので、
ログインシェルにコネクション情報を追加する。
addコマンドは毎回上書きするっぽいので助かる
podman system connection add podman -d --identity ~/.ssh/id_ed25519 ssh://user@$(hostname -I|tr -d " "):50626/run/user/1000/podman/podman.sock
Discussion