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上で扱ったイメージとコンテナは見られます。