権限のないコンテナで実行されるプロセスの最大制限を確認するにはどうすればよいですか?

権限のないコンテナで実行されるプロセスの最大制限を確認するにはどうすればよいですか?

最近、アーチLinuxを実行しているホストシステムを使用して、権限のないnspawnコンテナ(CI用)で何かを構築するときにあまりにも多くのファイルを開こうとしていることを示す糸でEMFILEエラーが繰り返し発生しました。

私は試した:

  1. コンテナとホストを追加してulimit -n調整します/etc/limits.conf。しかし、サイコロはありません。より高い制限が報告されますが、エラーは引き続き発生します。
  2. LimitNOFILEコンテナファイルでこの値を.nspawn非常に高い値に設定します。まだ何もありません(nspawn呼び出しを含む--settings=override)。
  3. 設定するには、LimitNOFILE=infinity次のulimit.conf推奨事項に従ってください。https://serverfault.com/questions/848088/how-to-set-max-file-descriptors-for-a-container
  4. できるだけ増加しfs.inotify.max_user_instancesfs.inotify.max_user_watches通過します。sysctl確かにEMFILEエラーが発生します。

PrivateUsers=offついに効果があったのは、次のダイアログで設定を介して特権コンテナに切り替えることでした。https://bbs.archlinux.org/viewtopic.php?id=232804。また、失敗したコマンドをルート(コンテナ内)として実行する必要があります。

だから私の質問は次のとおりです。ユーザー名の間隔がulimitと対話する方法これが私の問題を解決する理由前のステップがそうでない場合?

これをデバッグする必要がある次の人に役立つ良い精神モデルのボーナスポイントです。

関連情報