我需要将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构建中。

10-07 19:15
查看更多