Rstudio server rocker docker镜像启动找不到memory.limit_in_bytes文件报错
报错原因分析
- 核心触发点是RStudio Server运行时尝试读取cgroup v1架构的内存限制文件
/sys/fs/cgroup/memory/memory.limit_in_bytes失败,对应报错日志里的system error 2 (No such file or directory)提示,另一条“前一次R会话异常终止”是该错误触发的连带报错。 - 第一种常见场景:你的HPC集群宿主机操作系统使用cgroup v2架构(Ubuntu 22.04+、RHEL9等新发行版默认开启),cgroup v2的文件路径结构和v1完全不同,没有
/sys/fs/cgroup/memory/这个层级,你使用的rocker镜像中打包的RStudio版本未适配cgroup v2,就会出现找不到文件的报错。 - 第二种常见场景:HPC集群出于安全管控和资源调度限制,禁止容器挂载宿主机的cgroup文件系统,或者仅开放了部分受限的cgroup路径,导致容器内进程没有权限读取对应内存限制文件。
可行解决方案
- 最简单的适配方案:启动docker容器时添加环境变量跳过RStudio的cgroup内存检测,启动参数增加
-e RSESSION_DISABLE_CGROUP_MEMORY_LIMIT=1即可,该参数不会影响RStudio的正常功能和内存使用。 - 若你在HPC环境中有docker的高权限,可以在启动命令中增加
--cgroupns=host参数,让容器共享宿主机的cgroup命名空间,适配cgroup v2的路径规则。 - 也可以选择回退使用更早版本的rocker/rstudio镜像,比如4.1版本系列的镜像,对应打包的RStudio版本还未加入cgroup内存读取的逻辑,不会触发该报错。
内容的提问来源于stack exchange,提问作者moth
相关产品推荐
相关产品推荐

