尝试在 LXC 内部署 Docker 容器时超出磁盘配额

尝试在 LXC 内部署 Docker 容器时超出磁盘配额

我有一个运行 docker 的 LXC 容器。许多容器正在成功运行,但我无法添加更多容器;我正在尝试部署一个新的 docker 容器并收到以下错误:

container init caused "join session keyring: create session key: disk quote exceeded": unknown

但容器有足够的可用空间,主机也有。我用df -hand确认了这一点df -i(所以,它不是索引节点)

这个错误是什么意思以及如何解决?

答案1

这里的问题不是根文件系统,而是内核密钥环这个 LXC 线程解释得很好,并有以下解决方案:LXC主机(不在 LXC 容器内),通过以下方式增加最大键数:

echo 5000 | sudo tee /proc/sys/kernel/keys/maxkeys

5000诚然是任意的;选择一个比您现在拥有的数字更大的数字。

引用 LXD 维护者 Stéphane Graber 的话,从线程:

听起来 Docker 可能正在尝试使用内核密钥环?这肯定是他们的新行为……

并归功于西莫斯也来自该线程对于提供的命令,它为我解决了这个问题。

GitHub 上的进一步参考

答案2

添加到@Josh的答案。要使此更改在重新启动后持续存在,您可以/etc/sysctl.d使用更新的内核值在下面创建一个文件

# /etc/sysctl.d/99-custom.conf
kernel.keys.maxkeys=2000

如果您正在启动大量嵌套容器或非特权容器,那么您可能会开始拥有许多由映射用户拥有的进程,例如 UID 1000000。

相关内容