ドッカーを実行するLXCコンテナがあります。多くのコンテナが正常に実行されていますが、追加できません。新しいDockerコンテナをデプロイしようとしていますが、次のエラーが発生します。
container init caused "join session keyring: create session key: disk quote exceeded": unknown
しかし、コンテナには十分な空き容量があり、ホストも同じです。私はdf -h
これを and と確認しましたdf -i
(したがってインデックスノードではありません)
このエラーは何を意味し、回避策は何ですか?
答え1
ここでの問題はルートファイルシステムではなく、カーネルキーリング。このLXCスレッド非常によく説明されており、次の解決策があります。LXCホスト(LXCコンテナ内にない)次のように最大キー数を増やします。
echo 5000 | sudo tee /proc/sys/kernel/keys/maxkeys
5000
もちろん任意です。現在持っている数字より大きい数字を選択してください。
LXDマネージャーStéphane Graberの言葉を引用すると、スレッドから:
Dockerがカーネルキーリングを使用しようとしていると思いますか?これは彼らの新しい行動であるに違いありません...
そしてseamusの信用また、このスレッドで提供されたコマンドで問題を解決しました。
答え2
@Joshの答えに追加します。再起動後もこの変更を保持するには、/etc/sysctl.d
更新されたカーネル値で以下のファイルを作成します。
# /etc/sysctl.d/99-custom.conf
kernel.keys.maxkeys=2000
入れ子になったコンテナや権限のないコンテナを多数起動する場合は、UID 1000000など、マッピングされたユーザーが所有する多くのプロセスを持つことができます。
- ユーザーごとの最大キー制限:kernel.keys.maxkeysはユーザー固有ですか、キー別ですか?
- sysctl変数の設定
- この変数に関する追加ドキュメント:https://www.kernel.org/doc/html/latest/security/keys/core.html