无法将 Azure IoT Edge 模块启动到具有 NetworkId 的指定 docker 网络中

Unable to launch Azure IoT Edge module into specified docker network with NetworkId

我正在尝试在我的 IoT 边缘设备上启动模块,并将其放入我已经设置的某些指定 docker 网络中。

看这里的 README (github iotedge/edge-agent),似乎表明我可以在 edgeAgent 模块上设置一个 NetworkId 环境变量,这将导致它启动新的模块进入 docker 网络。

在我的边缘主机上,我有以下网络:

user@iot-edge:~$ sudo docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
79a913b7939e        azure-iot-edge      bridge              local
8ec9339ee789        bridge              bridge              local
4c4dc85139ab        host                host                local
ca2bdc648e9f        none                null                local
585545f54602        my-network          bridge              local

我正在我的 Azure 门户中为 edgeAgent 设置 NetworkId 环境变量。无论我将其设置为 my-network 还是 585545f54602,新模块总是会启动到 azure-iot-edge 网络中。

我是否遗漏了一些关于它应该工作的方式,或者是否有更好的方法来实现我想要的结果?

您应该能够在 IoT Edge 守护程序的配置文件中指定网络。此文件通常位于 /etc/iotedge/config.yaml.

moby_runtime 部分中的 network 设置应该可以实现您想要的:

moby_runtime:
  uri: "unix:///var/run/docker.sock"
  network: "my-network"

这将正确设置 Edge Agent 中的 env 变量并将此网络配置级联到所有其他容器。