.net - 更改 Docker 容器中的 inotify.max_user_instances 限制

标签 .net docker inotify

我正在尝试在 Dockerfile 级别更改 docker env 的 inotify.max_user_instances 设置。我正在尝试这样做,因为我收到此错误:

应用程序启动异常:System.IO.IOException: 配置的用户
已达到 inotify 实例数量的限制 (128)。

我已经在使用:

 .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: false);

我也尝试使用自定义“WebHost.CreateDefaultBuilder(args)”,因为有人指出它对同一文件使用 reloadOnChange: true 。

也尝试在 dockerfile 中运行:
RUN sysctl -w fs.inotify.max_user_watches=1048576
RUN echo fs.inotify.max_user_watches=1048576 | tee -a /etc/sysctl.conf && sysctl -p

但有人指出,不可能脱离这种背景。

是否有可能从 docker 镜像构建/部署阶段更改这些 sysctl 设置?我有点迷失于此。

如果有帮助,应用程序正在使用 .net core 2.2

最佳答案

Is there possibility to change those sysctl settings from the stage of docker image build



不。镜像构建的输出只是一个文件系统镜像,加上一些关于默认环境变量和命令的元数据,当你docker run图片。它不包括正在运行的进程、sysctl 值或其他任何内容。

请记住,sysctl 设置通常是全局内核级设置;由于所有 Docker 容器共享主机的内核,因此它们通常共享相同的 sysctl 值。 (由于容器通常也具有隔离的文件系统,因此通过 inotify 监视文件系统更改并不是一个常见的用例;如果代码或其他图像上下文发生实质性更改,则更常见的是重建图像然后删除并重新创建容器。)

您可以通过 docker run --sysctl 更改一组有限的值但这些不包括 inotify 值。更改此值的唯一方法是运行 sysctl ,作为 root,在主机上,在 Docker 之外。

关于.net - 更改 Docker 容器中的 inotify.max_user_instances 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57220658/

相关文章:

.net - 文件版本与程序集版本

c# - C++ 中的垃圾回收

c# - Windows 服务 : OnStart loop - do I need to delegate?

asp.net - Microsoft.Owin.Host.SystemWeb 和 Microsoft.Owin.Host.IIS 有什么区别

php - 观察 root 并检查 PHP 中的新文件

python - 用于运行带参数的 Python 程序的 Docker 文件

docker - docker-compose:在 `php-fpm`结束之前,有什么方法可以阻止 `db`启动吗?

docker - docker/docker-compose 中的 'down' 和 'rm' 有什么区别?

linux - 当文件通过 FTP 添加到 git 存储库时,在脚本中使用 inotifywait 自动执行 git 提交

raspberry-pi - 在/sys/class/gpio/gpioXX/(raspberry pi) 中未检测到 inotifywait