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使环境变量不可写的主要内容,如果未能解决你的问题,请参考以下文章

在构建时使用 docker-compose 将环境变量传递给 docker 映像

Docker扩展内容之容器环境变量

注册表reg 修改电脑环境变量 并立即生效 怎么写

怎样获取docker容器的环境变量

docker环境变量到底怎么用

如何持久化docker中的环境变量