环境变量不能在 docker 容器中更改


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,它仍然无法拾取它。在这种情况下,您需要使应用能够从文件或类似文件中读取变量。

相关内容

  • 没有找到相关文章

最新更新