sysctl:密钥“fs.inotify.max_user_instances”的权限被拒绝

sysctl:密钥“fs.inotify.max_user_instances”的权限被拒绝

我正在开发环境中运行一个 docker 容器。我正在尝试设置该fs.inotify.max_user_instances值。

由于在 docker 容器内我是 root 用户,因此sudo不需要。事实上,如果我运行sudo command_text我会得到:

bash: sudo: 找不到命令

所以我跑去sysctl fs.inotify.max_user_instances=8192增加max_user_instances价值。令我惊讶的是我收到了这个错误:

sysctl:密钥“fs.inotify.max_user_instances”的权限被拒绝

基于这个答案我意识到即使是 root 用户也无法更改某些内容,因为它们会影响整个机器(尽管这看起来很愚蠢,因为 root 用户在某种意义上是系统的所有者,并且如果他愿意的话应该能够更改整个机器) 。

使用-w标志没有区别。还是同样的错误。

因此我尝试echo 8192 > /proc/sys/fs/inotify/max_user_instances直接覆盖相关文件中的值。我得到了:

bash: /proc/sys/fs/inotify/max_user_instances:只读文件系统

我没有尝试更改文件系统权限。因为此时我觉得这可能不是一个好主意。

作为 root 用户,如何安全地增加inotifyDocker 容器内的配额?

更新

我什至尝试过chmod +w max_user_instances,但收到此错误:

chmod:更改“max_user_instances”的权限:只读文件系统

我的操作系统是:

root@panel:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

答案1

简而言之,Docker 使用chroot覆盖文件系统技术来运行容器。

正在运行的容器使用主机内核及其内核参数 (sysctl)。

伪文件系统(/proc/sys、 ...)从主机以只读方式安装。

主机上内核参数的更改会立即在正在运行的 docker 容器中看到。从 docker 容器中,您无法更改主机的内核参数(只读)。

Docker 有很多细节,为了简单和回答问题,我不提及这些细节。有关所有详细信息,请参阅 Docker 手册。

相关内容