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
变量?
答案 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中的应用程序仍然无法启动它。在这种情况下,您需要让您的应用程序从文件或类似文件中读取变量。