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
变量?
可能只是您需要使用表单
docker run -e NEW_ENV_VAR='new_var_val'
如中所述: 如何将环境变量传递给 docker 容器?
您可以通过向正在运行的容器发出 env 命令来检查:
sudo docker exec -it running-container-name env
Docker exec
每次都会在新会话(bash 或 sh(中运行您的命令,因此您的 export
ed 环境变量在下次执行时消失。
如果您想在 Docker 容器运行时中持久更改环境变量,我能想到的唯一方法是在 /etc/environment
中复制您的变量,如果配置为这样做,bash 将导入它们,或者您也可以export HOST_IP=XXX
.bashrc
以获得相同的效果。
但请记住,在这种情况下,如果docker中的应用程序在启动时不使用bash,它仍然无法拾取它。在这种情况下,您需要使应用能够从文件或类似文件中读取变量。