Dockerfile:如何运行linux命令并将其输出保存在变量中
我需要在Dockerfile:如何运行linux命令并将其输出保存在变量中,docker,dockerfile,Docker,Dockerfile,我需要在Dockerfile中将wlan0ip地址作为环境变量传递。由于这将启用DHCP,因此IP地址会在一段时间内发生更改。我想运行以下命令来获取ip地址,然后在Dockerfile中使用它: ip-4 addr show wlan0 | grep-oP'(?该命令(ip-4 addr show wlan0 | grep-oP')(?该命令(ip-4 addr show wlan0 | grep-oP')(?您会收到此错误,因为在构建映像时,执行的命令与主机“隔离”,并在单独的命名空间层中运行
Dockerfile
中将wlan0
ip地址作为环境变量传递。由于这将启用DHCP,因此IP地址会在一段时间内发生更改。我想运行以下命令来获取ip地址,然后在Dockerfile中使用它:
ip-4 addr show wlan0 | grep-oP'(?该命令(ip-4 addr show wlan0 | grep-oP')(?该命令(ip-4 addr show wlan0 | grep-oP')(?您会收到此错误,因为在构建映像时,执行的命令与主机“隔离”,并在单独的命名空间层中运行
您需要做的是将ip地址作为构建参数传递
Dockerfile:
...
ARG wlan
ENV HOST_WLAN0=$wlan
构建命令:
docker build --build-arg wlan=$(ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') ...
docker build--build arg wlan=$(ip-4 addr show wlan0 | grep-oP')(?您会遇到此错误,因为在构建映像时,执行的命令与主机“隔离”,并在单独的命名空间层中运行
您需要做的是将ip地址作为构建参数传递
Dockerfile:
...
ARG wlan
ENV HOST_WLAN0=$wlan
构建命令:
docker build --build-arg wlan=$(ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') ...
docker build--build arg wlan=$(ip-4 addr show wlan0 | grep-oP'(?run命令在您正在配置的容器内执行。但我猜wlan0属于docker主机系统。我也猜您在计划解决方案的设计中存在问题。docker容器不应该从主机系统知道此类基础设施详细信息。run命令在您正在配置的容器内执行正在配置。但我猜wlan0属于docker主机系统。我也猜您在计划解决方案的设计中存在问题。docker容器不应该从主机系统了解此类基础设施详细信息。您的建议很好。我将尝试您的建议很好。我将在构建时尝试它,并显示未知f滞后:--build args
修复了输入错误。好吧,我也发现了一个问题。当我们运行给出构建参数的build命令时,它成功运行。然后我用标志--restart=always
启动它的容器,因为我希望它总是被重新启动。但是当ip地址在DHCP上更改时,它仍然显示t他使用了旧的一个。为了让它使用新的IP地址,我必须再次运行build命令。在这种情况下,将它作为一个env变量传递给run命令:docker run-e HOST_WLAN0=$(IP-4 addr show WLAN0 | grep-oP'(?好的,如果我这样做,那么我必须从dockerfile中删除ARG wlan
&ENV HOST\u WLAN0=$wlan
。?在构建时,它说unknown flag:--build args
修复了一个输入错误。好的,我也发现了一个问题。当我们运行给出构建参数的build命令时,它成功运行。然后我用标志--restart=always
启动它的容器,因为我希望它总是重新启动。但是当ip地址在DHCP上更改时,它仍然显示旧的ip地址。为了使它使用新的ip地址,我必须再次运行build命令。在这种情况下,将它作为一个env变量传递给run命令:docker run-e HOST\u WLAN0=$(ip-4 addr show wlan0 | grep-oP’(?好的,如果我这样做,那么我必须从dockerfile中删除ARG wlan
&ENV HOST_wlan0=$wlan
。)。?