Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dockerfile:如何运行linux命令并将其输出保存在变量中_Docker_Dockerfile - Fatal编程技术网

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
。)。?