在运行docker contianer时设置环境变量

时间:2016-12-27 16:50:28

标签: docker environment-variables containers

我需要在正在运行的docker容器中设置环境变量。我已经知道在创建容器时设置环境变量的方法。到目前为止,我发现没有可用的直接方式来实现这个与docker和docker计划添加新版本1.13的东西。

但是我发现有些人能够管理它现在不适合我。我尝试了以下方法,但对我不起作用 -

docker exec -it -u=root test /bin/bash -c "export port=8090"

使用脚本将“export port = 8090”回显到/etc/bash.bashrc,然后将其获取

docker exec -it test /bin/bash -c "source /etc/bash.bashrc"

在脚本中配置整个事物并从主机运行它也不起作用。从主机运行脚本时,除“export port = 8090”或“source /etc/bash.bashrc”或“source /root/.bashrc”外,所有其他命令都成功执行。

有人解释为什么即使我设置了用户(“ - u = root”),从主机获取文件也无法在docker容器中运行?任何人都可以帮我解决这个问题吗?当我从容器内部获取文件时,它完美地工作。但在我的情况下,我必须从主机

注意:,我正在使用docker 1.12并在ubuntu中尝试了上述内容:16.04和ubuntu:14.04

2 个答案:

答案 0 :(得分:1)

如果您在docker中有一个正在运行的进程,并且您正在尝试更改docker中的环境变量,那么正在运行的进程将动态更改 - 这将不起作用。进程的环境变量在启动时设置。您可以看到here方法来克服这个问题,但我认为这不是正确的方法。

我希望有一个配置文件,该文件定期读取(或监听)。当您想要更改配置时,请更改文件。

如果这不是您的情况,请描述您的方案,以便我们更好地为您提供帮助。

答案 1 :(得分:-1)

我找到了一种为正在运行的容器提供环境变量的方法。拳头升级你的docker-engine。我使用的是V1.12.5。

使用环境变量创建脚本 -

#!/bin/bash

echo "export VAR1=VAL1
export VAR2=VAL2" >> /etc/bash.bashrc
source /etc/bash.bashrc

现在开始一个容器。这里,'test'是容器名称:

docker run -idt --name=test ubuntu

将脚本复制到容器:

docker cp script.sh test:/

运行脚本:

docker exec -it test /bin/bash -c "/script.sh"

重新启动容器:

docker restart test 

转到容器shell

docker exec -it test /bin/bash

检查变量

echo $VAR1
相关问题