1

我有一个使用祖先的正在运行的 docker 容器my_base_image。现在当容器运行时,我可以使用 export 命令设置环境变量docker exec吗?如果是,如何?

我尝试使用以下方法,但不起作用

docker exec -i -t $(docker ps -q --filter ancestor=`my_base_image`) bash -c "export my_env_var=hey"

基本上我想将 my_env_var=hey 设置为 docker 容器内的环境变量。我知道这可以通过在 Dockerfile 中使用.env_fileenv键入 docker-compose &ENV以多种方式完成。但我只想知道是否可以使用 docker exec 命令

4

1 回答 1

2

这是不可能的。一个进程永远不能改变它自己以外的任何其他进程的环境,除了它可以指定它自己启动的进程的初始环境。在这种情况下,您的docker execshell 不会启动主容器进程,因此它无法更改该进程的环境变量。

这是您需要停止、删除和重新创建容器的众多更改之一。您应该将此视为非常例行的容器维护,并计划最终删除该容器。这意味着,例如,保留任何需要在容器外部持久化的数据,最好是在外部数据库中,但可能在已安装的卷中。

于 2019-10-31T17:45:51.707 回答