我需要在正在运行的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
答案 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