Sorin Penteleiciuc
Sorin Penteleiciuc

Reputation: 865

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

I would like in my Java code to find my IP address. My code is inside a docker container and I always get the IP address of the docker container instead of my machine. I run the docker like this

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

This is my Java code

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

I need to modify the deployment.template.json so that the generated docker does take the IP Address of the machine

    "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"
                  }
                ]
              }
            }
          }
        }
      }
    }

Upvotes: 1

Views: 969

Answers (1)

Mark Radbourne
Mark Radbourne

Reputation: 653

I was going to say that you can't do that but apparently you can by using

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

I haven't tried it. I found it here: https://github.com/Azure/iot-edge-v1/issues/517. Maybe that will help.

Upvotes: 4

Related Questions