我在开发环境中运行一个码头容器。我正在尝试设置fs.inotify.max_user_instances
值。
因为在docker容器中我是根用户,因此不需要sudo
。实际上,如果我运行sudo command_text
,就会得到:
bash: sudo:找不到命令
因此,我运行sysctl fs.inotify.max_user_instances=8192
来增加max_user_instances
值。令我惊讶的是,我发现了这个错误:
sysctl:拒绝对"fs.inotify.max_user_instances“键的权限
基于这个答案,我意识到即使根用户也不能更改某些内容,因为它们会影响整个机器(尽管这看起来很愚蠢,因为根用户在某种意义上是系统的所有者,如果他想要的话,应该能够更改整个机器)。
使用-w
标志没有区别。还是同样的错误。
因此,我尝试echo 8192 > /proc/sys/fs/inotify/max_user_instances
直接覆盖相关文件中的值。我得到了:
bash: /proc/sys/fs/inotify/max_user_实例:只读文件系统
我没有尝试更改文件系统权限。因为此时我觉得这可能不是个好主意。
作为根用户,如何安全地增加Docker容器中的inotify
配额?
我甚至尝试过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/"
发布于 2023-03-13 07:32:49
简单地说,Docker使用chroot
技术与覆盖文件系统一起运行容器。
正在运行的容器使用主机内核及其内核参数(sysctl)。
伪文件系统(/proc
,/sys
,.)是从主机只读安装的。
主机上内核参数的更改立即在正在运行的docker容器中看到。在docker容器中,不能更改主机的内核参数(只读)。
关于Docker有很多细节,我没有提到简单性和对这个问题的回答。有关详细信息,请参阅码头工人手册。
https://unix.stackexchange.com/questions/739487
复制相似问题