在docker容器中无法更改环境变量

时间:2016-01-01 03:16:35

标签: variables docker env

docker run -e HOST_IP:xxxx

我使用cmd检查env HOST_IP是否已更改:

docker exec CONTAINER_ID env |grep HOST_IP 

我发现这些尝试后没有改变:

docker exec CONTAINER_ID bash -c 'export HOST_IP=XXX'
docker exec CONTAINER_ID bash -c 'echo HOST_IP=XXX >> ~/.bashrc && source ~/.bashrc'

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

2 个答案:

答案 0 :(得分:0)

可能只需要使用表格

docker run -e NEW_ENV_VAR='new_var_val'

如:How to pass environment variables to docker containers?

中所述

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

sudo docker exec -it running-container-name env

答案 1 :(得分:-1)

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

如果你想在Docker容器运行时持续更改环境变量,我能想到的唯一方法就是在/etc/environment中复制你的变量,如果它被配置为bash将导入它们,或者您也可以export HOST_IP=XXX .bashrc获得相同的效果。

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