首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在停靠容器中更改环境变量

无法在停靠容器中更改环境变量
EN

Stack Overflow用户
提问于 2016-01-01 11:16:35
回答 2查看 281关注 0票数 1
代码语言:javascript
复制
docker run -e HOST_IP:xxxx

我使用cmd来检查env HOST_IP是否发生了变化:

代码语言:javascript
复制
docker exec CONTAINER_ID env |grep HOST_IP 

经过这些尝试后,我发现它并没有改变:

代码语言:javascript
复制
docker exec CONTAINER_ID bash -c 'export HOST_IP=XXX'
docker exec CONTAINER_ID bash -c 'echo HOST_IP=XXX >> ~/.bashrc && source ~/.bashrc'

为什么?是什么控制了env变量?

EN

回答 2

Stack Overflow用户

发布于 2016-01-02 03:08:04

可能只是因为您需要使用表单

代码语言:javascript
复制
docker run -e NEW_ENV_VAR='new_var_val'

如中所述:How to pass environment variables to docker containers?

您可以通过向正在运行的容器发出env命令进行检查:

代码语言:javascript
复制
sudo docker exec -it running-container-name env
票数 0
EN

Stack Overflow用户

发布于 2016-01-01 11:47:50

Docker exec每次都会在一个新的会话(bash或sh)中运行您的命令,因此您的Docker ed环境变量在下一次执行时就会消失。

如果你想在Docker containers运行时永久地更改环境变量,我能想到的唯一方法就是在/etc/environment中复制你的变量,如果它被配置这样做,bash就会导入它们,或者你也可以在.bashrc中使用export HOST_IP=XXX来达到同样的效果。

但请记住,在这种情况下,如果应用程序在启动时不使用bash,那么docker中的应用程序仍然无法获取它。在这种情况下,您需要让您的应用程序从文件或类似文件中读取变量。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34553268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档