在Docker容器中不能更改环境variables

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' 

为什么? 什么控制了envvariables?

这可能只是你需要使用的forms

 docker run -e NEW_ENV_VAR='new_var_val' 

如下所述: 如何将环境variables传递给Docker容器?

您可以通过将env命令发布到正在运行的容器来进行检查:

 sudo docker exec -it running-container-name env 

Docker exec每次都会在新的会话(bash或sh)中运行您的命令,因此您的export ed环境variables在下次执行时不再执行。

如果你想持久地改变Docker容器运行环境中的环境variables,我能想到的唯一方法就是在/etc/environment拷贝你的variables,如果configuration这样做,bash会导入它们,或者你也可以export HOST_IP=XXX.bashrc中具有相同的效果。

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