Windows に Podman Desktop を入れると、コマンドプロンプトやGUI上でコンテナを使えるようになります。
それだけだと不便なので、使用しているIDEとWSLからも使えるように設定をした備忘録です。
Podman Desktop を入れると WSL 上に podman-machine-default
という Linux が入ります。
> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
podman-machine-default
Ubuntu-22.04
Windows 側の Podman の設定は、SSH を使って podman-machine-default
へ接続するようになっています。
> podman context list
Name URI Identity Default
podman-machine-default ssh://user@localhost:50725/run/user/1000/podman/podman.sock C:\Users\c_hir\.ssh\podman-machine-default true
podman-machine-default-root ssh://root@localhost:50725/run/podman/podman.sock C:\Users\c_hir\.ssh\podman-machine-default false
ある日、急に繋がらなくなったのでいろいろ試した結果、ホスト名をlocalhost
からpodman-machine-default
のIPにしたらアクセスできるようになった。netsh.exe interface portproxy add v4tov4
で同IPにフォワードしているので不思議。
podman system connection remove podman-machine-default
podman system connection add podman-machine-default --identity C:\Users\c_hir\.ssh\podman-machine-default ssh://user@172.26.130.33:50725/run/user/1000/podman/podman.sock
IntelliJ IDEA
IntelliJ IDEAのコンテナの設定は Services で行います。

「+」を選択するとメニューが出るので、Docker Connection
を選択します。

Docker
ダイアログが表示され、特に変更は必要ありません。分かりやすいように名前だけ変えると良いでしょう。ダイアログの下側に Connection Successful
と表示されてればOKです。
この設定方法以外にも podman context list
で表示された情報を使って、Podman Desktop が作成した WSL へ SSH で接続する方法も可能です。

OK
を選択すると、 Services に追加されます。

WSL
SSHの鍵をWindowsからWSLへコピーして、権限を設定
sudo mkdir /root/.ssh
sudo chmod 700 /root/.ssh
sudo cp /mnt/c/Users/c_hir/.ssh/podman-machine-default /root/.ssh/podman-machine-default
sudo chmod 600 /root/.ssh/podman-machine-default
鍵を使って接続できることを確認
> sudo ssh -i ~/.ssh/podman-machine-default user@localhost -p 50725 exit
podman にリモートホストの情報を登録
> sudo podman system connection add -d --identity /root/.ssh/podman-machine-default --socket-path /run/user/1000/podman/podman.sock podman ssh://user@localhost:50725
情報が登録されたことを確認
> sudo podman system connection list
Name Identity URI
podman* /root/.ssh/podman-machine-default ssh://user@localhost:50725/run/user/1000/podman/podman.sock
イメージとコンテナの状況を見てみてもなぜか見えない・・・
> sudo podman image list
REPOSITORY TAG IMAGE ID CREATED SIZE
> sudo podman container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
なぜか実行はできる
> sudo podman -r run quay.io/podman/hello
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob sha256:e748d51595bc62e996d56ccaa873a5f520ab314d5c63aca3b53b4110129d42d1
Copying config sha256:54c80734fe405a23783a26881d74c5842f6b047f021b029c0b672565101fef76
Writing manifest to image destination
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
再びイメージとコンテナの状況を見てみてもやはり見えない・・・
> sudo podman image list
REPOSITORY TAG IMAGE ID CREATED SIZE
> sudo podman container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Podman DesktopだとこのWSL上で扱ったイメージとコンテナは見られます。