最近、アーチLinuxを実行しているホストシステムを使用して、権限のないnspawnコンテナ(CI用)で何かを構築するときにあまりにも多くのファイルを開こうとしていることを示す糸でEMFILEエラーが繰り返し発生しました。
私は試した:
- コンテナとホストを追加して
ulimit -n
調整します/etc/limits.conf
。しかし、サイコロはありません。より高い制限が報告されますが、エラーは引き続き発生します。 LimitNOFILE
コンテナファイルでこの値を.nspawn
非常に高い値に設定します。まだ何もありません(nspawn呼び出しを含む--settings=override
)。- 設定するには、
LimitNOFILE=infinity
次のulimit.conf
推奨事項に従ってください。https://serverfault.com/questions/848088/how-to-set-max-file-descriptors-for-a-container - できるだけ増加し
fs.inotify.max_user_instances
てfs.inotify.max_user_watches
通過します。sysctl
確かにEMFILEエラーが発生します。
PrivateUsers=off
ついに効果があったのは、次のダイアログで設定を介して特権コンテナに切り替えることでした。https://bbs.archlinux.org/viewtopic.php?id=232804。また、失敗したコマンドをルート(コンテナ内)として実行する必要があります。
だから私の質問は次のとおりです。ユーザー名の間隔がulimitと対話する方法とこれが私の問題を解決する理由前のステップがそうでない場合?
これをデバッグする必要がある次の人に役立つ良い精神モデルのボーナスポイントです。