正如标题所说,我正在试图将我的docker容器的IP地址作为容器内的环境variables。 这是我试过的:
启动容器时
docker run -dPi -e ip=`hostname -i` myDockerImage
当容器已经启动
docker exec -it myDockerImage bash -c "export ip=`hostname -i`"
这两种方法的问题是它使用运行命令的主机的ip地址,而不是运行的docker容器。
于是我在docker容器里面创build了一个如下所示的脚本:
#!/bin/bash export ip=`hostname -i` echo $ip
然后运行这个
docker exec -it myDockerImage bash -c ". ipVariableScript.sh"
当我添加my_cmd在我的情况是bash
的脚本结束时,它在一个bash的会话。 我以后不能在需要的文件中使用它。我需要将它设置为环境variables,而不是一个会话的variables。
所以我已经用'。'来源了。 但是当我在容器中时它仍然不会回应。 如果我在脚本中放入一个echo $ip
,它会给我正确的IP地址。 但是只能从它被设置的脚本中使用。
Docker中的服务名称更可靠,更易于使用。 但是,在这里
$ docker run -it ubuntu bash -c 'IP=$(hostname -i); echo ip=$IP' ip=172.17.0.76