在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'
为什么? 什么控制了env
variables?
这可能只是你需要使用的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。