如何在Docker中将容器的内部ip地址用作环境变量

时间:2016-08-25 07:22:31

标签: linux docker

我试图将docker容器的IP地址作为容器中的环境变量。这是我尝试过的:

启动容器时

docker run -dPi -e ip=`hostname -i` myDockerImage

当容器已启动时

docker exec -it myDockerImage bash -c "export ip=`hostname -i`"

这两种方法的问题在于它使用运行命令的主机的ip地址,而不是运行它的docker容器。

然后我在docker容器中创建了一个如下所示的脚本:

#!/bin/bash
export ip=`hostname -i`
echo $ip

然后用

运行它
docker exec -it myDockerImage bash -c ". ipVariableScript.sh"

当我将my_cmd(在我的情况下是bash添加到脚本的末尾时,它在一个bash会话中工作。我以后无法在我需要的文件中使用它。我需要将其设置为环境变量,而不是一个会话的变量。

所以我已经用'来源了它。'。但是当我在容器中时,它仍然不会回响。如果我在脚本中放置了一个echo $ip,它将为我提供正确的IP地址。但只能在其设置的脚本中使用。

1 个答案:

答案 0 :(得分:0)

Docker中的服务名称更可靠,更易于使用。但是,这里

如何将Docker来宾IP分配给来宾

中的环境var
$ docker run -it ubuntu bash -c 'IP=$(hostname -i); echo ip=$IP'
ip=172.17.0.76