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变量?
发布于 2016-01-02 03:08:04
可能只是因为您需要使用表单
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发布于 2016-01-01 11:47:50
Docker exec每次都会在一个新的会话(bash或sh)中运行您的命令,因此您的Docker ed环境变量在下一次执行时就会消失。
如果你想在Docker containers运行时永久地更改环境变量,我能想到的唯一方法就是在/etc/environment中复制你的变量,如果它被配置这样做,bash就会导入它们,或者你也可以在.bashrc中使用export HOST_IP=XXX来达到同样的效果。
但请记住,在这种情况下,如果应用程序在启动时不使用bash,那么docker中的应用程序仍然无法获取它。在这种情况下,您需要让您的应用程序从文件或类似文件中读取变量。
https://stackoverflow.com/questions/34553268
复制相似问题