我想在Docker容器中将IP地址作为环境变量获取。以下是我的尝试:
在启动容器时,我尝试了以下方法:
当容器已经启动时
这两种方法的问题在于它使用运行命令的主机的IP地址,而不是运行该命令的docker容器的IP地址。
因此,我创建了一个位于docker容器内部的脚本,其内容如下:
当我将在我的情况下是
在启动容器时,我尝试了以下方法:
docker run -dPi -e ip=`hostname -i` myDockerImage
当容器已经启动时
docker exec -it myDockerImage bash -c "export ip=`hostname -i`"
这两种方法的问题在于它使用运行命令的主机的IP地址,而不是运行该命令的docker容器的IP地址。
因此,我创建了一个位于docker容器内部的脚本,其内容如下:
#!/bin/bash
export ip=`hostname -i`
echo $ip
然后使用以下命令运行:
docker exec -it myDockerImage bash -c ". ipVariableScript.sh"
当我将在我的情况下是
bash
的my_cmd添加到脚本的末尾时,它可以在一个bash会话中工作。但我不能在需要它的文件中后续使用它。我需要将其设置为环境变量,而不是一个会话的变量。
所以我已经用'.'来源化它了。但是当我在容器中时,它仍然无法回显。如果我在脚本中放置一个echo $ip
,它将给我正确的IP地址。但只能从正在设置它的脚本中使用。