Docker使环境变量不可写
Posted
技术标签:
【中文标题】Docker使环境变量不可写【英文标题】:Docker make environment variable unwritable 【发布时间】:2018-12-16 20:39:08 【问题描述】:我有一个带有 6 个 v100 的机器学习平台,人们可以通过 Docker 容器内的 Jupyter 访问它们。我想控制谁使用哪个显卡,所以我必须设置一个环境变量。
所以,我想将环境变量NVIDIA_VISIBLE_DEVICES
设置为特定的显卡。但在 Jupyter(在 docker 容器上运行)中,用户可以编辑此变量,因此每个人都可以访问每个 GPU。
如何使这个变量不可写?
【问题讨论】:
【参考方案1】:将readonly NVIDIA_VISIBLE_DEVICES
添加到linux的某个启动文件(可能是.bashrc),在启动容器时使用-e
设置NVIDIA_VISIBLE_DEVICES
的默认值。
那么用户不能在jupyter中更改它。
【讨论】:
谢谢!我猜必须在 docker 容器操作系统上设置“只读 NVIDIA_VISIBLE_DEVICES”? 如何重新加载 nvidia 以便我看到 NVIDIA_VISIBLE_DEVICES 的变化 重启或重新设置容器,我认为 NVIDIA_VISIBLE_DEVICES 将应用于您的环境。我不熟悉gpu相关的,但如果只是一个环境变量,我认为它与其他应用程序一样。readonly
是特定于 bash
和其他 shell 的 shell 扩展,不影响子进程。我认为这不会解决 OP 的问题,如果容器不包含 bash 和/或不运行 shell 启动脚本(两者都很常见),则可能无法工作。
但是op使用jupyter,限制场景,虽然不是每个场景都完美解决以上是关于Docker使环境变量不可写的主要内容,如果未能解决你的问题,请参考以下文章