我需要将wlan0
ip地址作为环境变量传递给Dockerfile
。由于此为DHCP
,因此IP地址会更改一段时间。我想到了运行以下命令来获取IP地址,然后在Dockerfile中使用它:ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
上面的命令给我192.168.1.125
。我想使用此IP地址将其作为环境变量传递。为此,我使用了:
RUN wlan="$(ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')" && echo $wlan
ENV HOST_WLAN0=$wlan
但这给了我一个错误
Device "wlan0" does not exist.
。我该如何解决? 最佳答案
之所以会出现此错误,是因为在构建镜像时,所执行的命令已与主机“隔离”,并在单独的命名空间层中运行。
您需要做的是将IP地址作为构建arg传递。
Dockerfile :
...
ARG wlan
ENV HOST_WLAN0=$wlan
构建命令:
docker build --build-arg wlan=$(ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') ...
这会将正确的IP地址输入到Docker构建中。