Lesstep
GitHub Actions・Ubuntu 26.04・2026年11月4日に確認

ubuntu-latest(Ubuntu 26.04)の「rootless netns: kill network process: permission denied」:rootless Podman と pasta

ubuntu-latest は、2026年10月19日から11月19日にかけて Ubuntu 24.04 から 26.04 に移ります(ほかに変わること)。rootless の Podman は、コンテナーのネットワークに pasta を使います。Ubuntu 26.04 には pasta の AppArmor のプロファイル(/etc/apparmor.d/usr.bin.pasta)が入っていて、このプロファイルは pasta が Podman からシグナルを受け取ることを許していません。そのため、Podman が rootless のネットワークの名前空間を片付けようとして pasta に SIGTERM を送ると、カーネルに断られます。Ubuntu 24.04 には pasta のプロファイルが無いので、同じジョブが通ります。

runner-images の担当者は、ubuntu-26.04 の 20261026.180.1 と ubuntu-26.04-arm の 20261026.168.1 で再現しています(runner-images #15182)。原因は Ubuntu そのものにあり(Ubuntu のバグ 2154379・2026年5月に登録・11月4日の時点で apparmor・passt・podman のどれも Confirmed のまま)、手元の Ubuntu 26.04 でも同じことが起きます。

出る文

Podman 自身の文です。podman unshare --rootless-netns true は終了コード126で終わります:

Error: rootless netns: cleanup: 1 error occurred:
	* rootless netns: kill network process: permission denied

Docker 互換のソケット越しだと、テストは通ったあとで、docker compose down がネットワークの最後のコンテナーのところで失敗します(8Knot #1223):

 Container 8knot-redis-broker-1 Error Error while Stopping
Error response from daemon: removing container 29ee0adbe1a7... network: 1 error occurred:
	* rootless netns: kill network process: permission denied
Error: executing /usr/libexec/docker/cli-plugins/docker-compose -f docker-compose.yml down: exit status 1
Error: Process completed with exit code 1.

podman run --rm --network <ブリッジ> は同じエラーを出しても終了コード0で終わるので、ステップは緑のままで、文を見落としやすくなります。カーネルのログには、断られるたびに1行ずつ出ます:

apparmor="DENIED" operation="signal" class="signal" profile="pasta" pid=2290 comm="podman" requested_mask="receive" denied_mask="receive" signal=term peer="podman"

直し方1:pasta がシグナルを受け取れるようにする

直ったイメージがジョブに届くまでの間に、担当者が示しているステップです。rootless の Podman のネットワークを使う最初のステップより前に置きます。26.04 のプロファイルは local/ のファイルを読み込まないので、規則はプロファイルそのものに書く必要があります。報告した人の回避のジョブは、これで ubuntu-26.04 を通りました。

- name: Allow podman to stop pasta (actions/runner-images#15182)
  run: |
    sudo sed -i '$ i\  signal (receive) set=(term) peer=podman,' /etc/apparmor.d/usr.bin.pasta
    sudo apparmor_parser -r /etc/apparmor.d/usr.bin.pasta

ubuntu-24.04 にはこのファイルが無いので、上のステップはそこで失敗します。両方のイメージで、またイメージに規則が入ったあとも同じステップを使うなら、ファイルがあって、まだ Podman の規則が無いときだけ足します。イメージ側の直し(runner-images #15184)も、同じ peer=podman を確かめています:

- name: Allow podman to stop pasta (actions/runner-images#15182)
  run: |
    p=/etc/apparmor.d/usr.bin.pasta
    if [ -f "$p" ] && ! sudo grep -q 'peer=podman' "$p"; then
      sudo sed -i '$ i\  signal (receive) set=(term) peer=podman,' "$p"
      sudo apparmor_parser -r "$p"
    fi

直し方2:pasta の代わりに slirp4netns を使う

slirp4netns には、このようなプロファイルがありません。warren #62 は、これを rootless のネットワークの既定にしました:

- name: Use slirp4netns for rootless networking
  run: |
    command -v slirp4netns >/dev/null || sudo apt-get install -y slirp4netns
    mkdir -p ~/.config/containers
    printf '[network]\ndefault_rootless_network_cmd = "slirp4netns"\n' > ~/.config/containers/containers.conf

これは ~/.config/containers/containers.conf を新しく書きます。ジョブがすでにこのファイルを書いているなら、ファイルを置き換えずに、その [network] の表の下にこの行を足します。

直し方3:Podman のジョブは 24.04 に残す

runs-on: ubuntu-24.04

CoreOS(bootupd #1179・ignition #2351)と CHAOSS(8Knot #1225)が、10月末にこうしました。GitHub がこのイメージを終えるまでは使えます。

イメージに規則が入ったら

runner-images #15184 は、同じ規則を 26.04 のイメージに入れ、プロファイルに規則があるかのテストも足します。11月4日の時点ではまだマージされておらず、担当者は届いたら #15182 で知らせると書いています。そのあとは、直し方1の確かめつきのステップは何もしないので、残しておけます。

見分け方

ほかの 26.04 の失敗

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

JetBrains Marketplace で入れる

GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu は Canonical Ltd. の商標、Docker は Docker, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・Docker, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:「The ubuntu-latest label will migrate to Ubuntu 26」 · Ubuntu 26.04 の bubblewrap · Ubuntu 26.04 の「client version ... is too old」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English