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。也许这会有所帮助。
我想在我的 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。也许这会有所帮助。