如何在启动时动态设置docker container ip到环境变量?

时间:2018-01-29 14:25:23

标签: bash shell docker containers dockerfile

我想将docker container hostname导出为环境变量,稍后我可以在我的应用中使用它。在我的docker文件中,我调用了我的脚本"运行"作为最后一个命令

CMD run

运行文件是可执行的,并且对我执行的其他命令工作正常但在它们之前我想将容器主机名导出到env。变量如下

"运行"文件尝试1

#!/bin/bash
export DOCKER_MACHINE_IP=`hostname -i`
my_other_commands
exec tail -f /dev/null

但是当我输入docker container并检查时,该变量未设置。如果我使用

  

echo $ DOCKER_MACHINE_IP

导出后在运行文件中

,当我尝试

时,它会在控制台上显示ip
  

泊坞日志

我也试过从"运行"采购另一个脚本。文件如下

"运行"文件尝试2

#!/bin/bash
source ./bin/script
my_other_commands 
exec tail -f /dev/null

并且脚本再次包含导出命令。但是这也没有设置环境变量。我做错了什么?

1 个答案:

答案 0 :(得分:0)

执行脚本时,脚本退出时,该脚本设置的任何环境变量都将丢失。

但是对于您在上面发布的环境变量的案例,您的脚本中的命令都应该是可访问的,但是当您通过docker run进入docker容器时,您将获得一个新的shell,不包含你的变量。

tl; dr导出的环境变量只能用于设置变量的shell的子shell。如果您在登录时需要它,则应该获取./bin/script文件。