Ubuntu24.04でrootlessなコンテナが operation not permitted で起動しない時の対処法

Posted on May 2, 2024

症状

Ubuntu24.04でk3sやnerdctlでrootlessなコンテナを生やそうとしても次のようなエラーが出て動かない。

error: failed to start the child: fork/exec /proc/self/exe: operation not permitted

journaldには次のようなログが残っている。

audit: type=1400 audit(1714628558.423:115): apparmor="AUDIT" operation="userns_create" class="namespace" info="Userns create - transitioning profile" profile="unconfined" pid=1582 comm="k3s-server" requested="userns_create" target="unprivileged_userns"

原因

Ubuntu24.04ではセキュリティ強化のためAppArmorのルールが強化され、プロファイルをインストールしない限りデフォルトで非特権プロセスからユーザー名前空間の作成が禁止されるようになった模様。

対策

/etc/apparmor.d/の下に適当なファイル名でプロファイルを作る。

abi <abi/4.0>,
include <tunables/global>

profile 適当な名前 [バイナリへのパス] flags=(unconfined) {
  userns,
  include if exists <local/[最初と同じ名前]>
}

保存したらAppArmorをリロードして適用することを忘れずに

sudo systemctl restart apparmor.service