Arch Linux on WSL2 で podman でコンテナを動かす

自分用メモ。

tl;dr

  • GitHub - yuk7/ArchWSL: ArchLinux based WSL Distribution. Supports multiple install.
    • Arch Linux on WSL2 を入れる。 scoop 使うと楽。
  • Podman - ArchWiki
    • /etc/sub{u,g}id の設定が必要。設定する値は <user>:100000:65536 などとすると分かりやすい (コンテナの uid=1000 がホストの uid=101000 になり対応関係が一目瞭然)
    • 上記設定前に podman 叩いちゃった場合は podman system migratepodman system reset を実行する必要があるみたい
  • How to run Podman on Windows with WSL2 | Enable Sysadmin
    • Red Hat の記事。最後の方の /etc/containers の設定例だけ見れば良い。
  • pacman -S shadow
    • ArchWSL インストール直後だと /usr/bin/new{u,g}idmap に capability (or setuid bit) が設定されていないため、これらのバイナリが含まれる shadow パッケージを再インストールすることで設定させる
    • 以下になっていればOK。capabilityがセットされていれば setuid bit の設定は不要。

      $ getcap /usr/bin/new{u,g}idmap
      /usr/bin/newgidmap cap_setgid=ep
      /usr/bin/newuidmap cap_setuid=ep
      $ ls -l /usr/bin/new{u,g}idmap
      -rwxr-xr-x 1 root root 41K  9月  7 22:42 /usr/bin/newgidmap
      -rwxr-xr-x 1 root root 37K  9月  7 22:42 /usr/bin/newuidmap
      

当時のツイート

飲酒正月気分で殴り書きしてるから今読むと日本語がおかしい。

その他

  • podman in podman も余裕やろと思ってやってみたら overlayfs on overlayfs (?) はできないみたいなエラーが出て挫折してしまった。 ググった感じ /var/lib/containers あたりを volume にすれば良さそうっぽいが試してない。
  • podman をググると docker と違って英語記事ばかり出てくるのは良いことなのかどうなのか。 Red Hatサブスクリプションがないと読めない記事ばっか出てくるのは辛い。 Red Hat Developerに登録 (無料) すれば読めるとのこと。Shion Tanaka さん教えて頂きありがとうございます!
  • WSL2 で systemd を動かすかどうかは悩ましいところ。 以下を使えば簡単に systemd を使えるようになるらしいが、今のところ導入していない。 github.com 導入していない理由は以下。
    • ホストマシンのシャットダウン時に systemd に対するシャットダウン操作が必要になるなど、WSL2の気軽さが損なわれてしまいそうな気がする。
    • systemd の提供する仕組みと Windows の提供する init の仕組みがコンフリクトしたりしないかが心配。ネットワーク周りとか。
    • 今のところ systemd なしでも困っていない。動かしたいサービスがあったら podman コンテナで代用できそう。 まあそのうち気が変わるかもしれない。