0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RHEL 8.1でPodmanコンテナ起動時のSELinuxエラーを「container-selinux」導入で解決した話

Posted at

これは何?

RHEL 8.1環境でPodmanを利用してコンテナを起動した際に発生した「runc create failed: unable to start container process: unable to apply cgroup configuration」エラーについて、発生原因とその解決方法、そしてなぜ解決に至ったのかをまとめます。

概要

Podmanでコンテナを起動しようとした際、以下のようなエラーが発生しました。

ERRO[0000] Starting some container dependencies         
ERRO[0000] "runc: runc create failed: unable to start container process: unable to apply cgroup configuration: unable to start unit \"libpod-xxxxxxxx.scope\" ...: error creating systemd unit `libpod-xxxxxxxx.scope`: got `failed`: OCI runtime error" 
Error: starting some containers: internal libpod error

エラーの切り分けとしてSELinuxを無効化してみた所、問題なく動くことが確認できました。
但し、SELinuxを恒久的に無効化するのはリスクがあるため、どうにかして回避できないかを検証した内容を記載します。

対応方法

エラー発生時の状況

  • Podmanでコンテナを起動しようとすると、systemd unitの作成に失敗し、cgroupの設定適用ができずエラーとなる。
  • SELinuxのenforcing状態や、Podmanのバージョン、依存パッケージの有無によって発生することがある。

解決までの流れ

  1. エラーメッセージの確認
    エラー内容から、cgroupやsystemd unitの作成に失敗していることが分かる。

  2. SELinuxの設定・状態を確認

    • SELinuxがEnforcingの場合、ポリシー不足によりアクセスが拒否されることがある。
    • setenforce 0で一時的にPermissiveにするとエラーが発生しなくなる場合、SELinuxが原因の可能性が高い。
  3. container-selinuxパッケージの導入

    • 以下コマンドでパッケージをインストール。
      dnf install -y container-selinux
      
    • これにより、Podmanの動作に必要なSELinuxポリシー(container_t、container_file_tなど)が追加される。
  4. 再度コンテナを起動

    • container-selinux導入後、同じコマンドでコンテナを起動するとエラーが発生しなくなった。

補足

  • 特殊なボリュームマウントや独自のファイル配置を行う場合は、:z:ZオプションでSELinuxラベルを明示的に指定することが推奨されます。
  • それでも解決しない場合は、audit2allowやudicaでカスタムポリシーを作成する方法も検討してください。

まとめ

  • Podman+SELinux環境で「runc create failed: unable to apply cgroup configuration」エラーが発生した場合、まず「container-selinux」パッケージが導入されているか確認することが重要
  • 標準的な運用であれば、このパッケージのインストールだけでコンテナ系のSELinux関連エラーが解消するはずです。
  • 今回はインストールだけで済みましたが、場合によっては追加の設定やカスタムポリシーが必要なケースもあるため注意してください。

参考

[1] https://www.redhat.com/en/blog/container-permission-denied-errors
[2] https://github.com/containers/podman/issues/16936
[3] https://github.com/containers/podman/issues/14851
[4] https://bugzilla.redhat.com/show_bug.cgi?id=1897579
[5] https://docs.podman.io/en/v5.0.1/markdown/podman-run.1.html
[6] https://unix.stackexchange.com/questions/756982/podman-fails-with-error-relocating-relro-protection-failed-local-share
[7] https://access.redhat.com/solutions/7072912
[8] https://www.redhat.com/en/blog/user-namespaces-selinux-rootless-containers
[9] https://gitee.com/mgb/Podman/blob/master/troubleshooting.md
[10] https://github.com/containers/libpod/issues/2245

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?