Azure Iotedge 开始 docker 与 --net=host 以便我可以访问我的 IP

Azure Iotedge start docker with --net=host so that I can access my IP

我想在我的 Java 代码中找到我的 IP 地址。我的代码在 docker 容器内,我总是获取 docker 容器的 IP 地址,而不是我的机器。 我运行 docker 喜欢这样

        docker run -p 8080:8080 --privileged --net=host -d 6b45f71550a3

这是我的Java代码

        InetAddress addr = InetAddress.getLocalHost();
        String hostname = InetAddress.getByName(addr.getHostName()).toString();

我需要修改 deployment.template.json 以便生成的 docker 确实采用机器的 IP 地址

    "modules": {
      "MyModule": {
        "version": "1.0",
        "type": "docker",
        "status": "running",
        "restartPolicy": "always",
        "settings": {
          "image": "dev.azurecr.io/dev:0.0.1-arm32v7",
          "createOptions": {
            "ExposedPorts":{"8080/tcp": {}}, 
            "HostConfig": {
              "PortBindings": {
                "8080/tcp": [
                  {
                    "HostPort": "8080"
                  }
                ]
              }
            }
          }
        }
      }
    }

我本来想说你不能那样做,但显然你可以使用

"createOptions": {
  "NetworkingConfig": {
    "EndpointsConfig": {
      "host": {}
    }
  },
  "HostConfig": {
    "NetworkMode": "host"
  }
}

我没试过。我在这里找到它:https://github.com/Azure/iot-edge-v1/issues/517。也许这会有所帮助。