在HPC集群上用Singularity实现容器隔离环境的技术咨询
在HPC集群用Singularity实现类Docker的完全隔离环境
问题原因
这是Singularity的默认特性,不是集群配置问题。Singularity为方便用户访问本地文件,默认会自动挂载用户家目录、/tmp、/proc等系统目录,导致集群家目录的环境被带入容器;而Docker默认不会自动挂载用户家目录,所以本地Docker能提供完全隔离的环境。
实现完全隔离的方法
- 禁用家目录挂载:运行容器时添加
--no-home参数,容器内会生成一个临时/home目录,彻底和集群家目录解耦,命令示例:singularity run --no-home ubuntu_latest.sif - 更彻底的隔离:如果需要清除环境变量并限制系统挂载点,组合使用
--contain(仅保留必要系统挂载)、--no-home、--cleanenv(清除宿主环境变量),命令示例:singularity run --contain --no-home --cleanenv ubuntu_latest.sif - 自定义临时家目录:如果需要自主控制容器内的家目录路径,用
--home指定一个临时目录,示例:singularity run --home /tmp/my_dev_home ubuntu_latest.sif
内容的提问来源于stack exchange,提问作者abalter
相关产品推荐
相关产品推荐

