💬

WSLのLinux側からPodmanを利用する方法(4.7以降): ポッドマンが倒せない(10)

2023/11/06に公開

/mnt/wslを使う時代

以前こんな記事を書いた

どうにかしてwindows上のpodman DesktopにLinux側からアクセスしたくて四苦八苦した足跡
どうもそれが公式対応したっぽい

https://github.com/containers/podman/releases/tag/v4.7.0

WSL: Registers shared socket bindings on Windows, to allow other WSL distributions easy remote access.(他のWSLディストリビューションが簡単にリモートアクセスできるように、Windows上で共有ソケットバインディングを登録しました.

🤔 見たことないぞ?

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

コンテナを作り変える

既存のコンテナが存在する場合は特に変化がないっぽい
なのでコンテナを置き換える必要がありそう
(実行中のコンテナが全部吹き飛ぶので、消したくなければ別machineを使用すると良い)

powershell
podman machne rm podman-machine-default
podman machine init
podman machine start

適当なディストリビューションで共通ディレクトリを見てみると

bash
ls /mnt/wsl/podman-sockets/podman-machine-default/
  podman-root.sock=  podman-user.sock=

(・∀・)イイネ!

/mnt/wsl 配下にsockが生えてる

コンテナを実行してみる

適当なディストリビューション上で run してみる
リモートオプションを付けてsockを指定する

bash
export CONTAINER_HOST=unix:///mnt/wsl/podman-sockets/podman-machine-default/podman-user.sock
podman -r run quay.io/podman/hello
 Trying to pull quay.io/podman/hello:latest...

!... 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

( ´ ▽ ` )ノ HELLO

Windows上のPodman Desktopを確認してみると

(・∀・)ニヤニヤ

わざわざsshを整備していた今までと違ってめっちゃ簡単
rootless, rootfull両方対応できるのがいいね。

------------------- ↓ 後書きはここから ↓-------------------

podman-composeでWindows Podmanを使う

podmanコマンドで実行できたので、
podman-composeでも使ってみたい
ただ、現状決まった手段はなさそうだ。

いろいろ試した上で以下のようにして一応使用はできた
podman-composeにはリモートアクセス機能がないので、
aliasでpodmanコマンドを上書きする

bash
podman system connection add podman-user unix:///mnt/wsl/podman-sockets/podman-machine-default/podman-user.sock
podman system connection list
 Name         URI                                                                     Identity    Default
 podman-user  unix:///mnt/wsl/podman-sockets/podman-machine-default/podman-user.sock              true
alias podman="podman --remote"
podman-compose up -d --build 

docker-composeとの連携ってどうやるんだろう

Discussion