首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure IOT Edge Linux Ubuntu VM上的服务器-要从VM外部访问设备

Azure IOT Edge Linux Ubuntu VM上的服务器-要从VM外部访问设备
EN

Stack Overflow用户
提问于 2020-05-25 05:15:09
回答 2查看 174关注 0票数 0

我在linux vm上有一台服务器,它托管在Edge模块中。我想访问我的主机(Windows)上的服务器,但据我所知,Edge modules的ip地址是我的Linux VM的本地主机。

如何更改边缘模块的ip地址分配,使其采用我的linux虚拟机的ip地址,而不是本地主机的ip地址(172...)?

EN

回答 2

Stack Overflow用户

发布于 2020-05-29 05:43:28

如果我正确理解了您的问题,您希望从另一台计算机访问在Edge模块内部运行的服务器。因此,服务器正在侦听的端口必须在主机上公开,对吧?

如果是这样,有一种比更改IoT边缘网络更好的方法。通过‘端口映射’,你可以从你的容器/模块中获取一个公开的端口,并‘映射’它,这样它就可以在主机级公开,因此你的另一台机器可以只使用主机的IP和你的服务器的端口来连接。

例如,假设您在模块中运行的“服务器”是侦听端口80的web服务器。如果您想要将端口80上侦听器暴露给主机,您可以在模块的"Container Create Options“中执行如下操作...

代码语言:javascript
复制
    {
    "PortBindings": {
      "80/tcp": [
        {
          "HostPort": "80"
        }
      ]
    }
  }
}

它将侦听到达端口80上的主机的传入流量,然后将该流量转发到端口80上的模块。如果你愿意,你甚至可以将“主机端口”更改为其他端口(例如,监听端口8081,然后“转发”到模块中的端口80 )。

需要注意的一件事是,如果您需要使用端口443、8883或5671,默认情况下,这些端口已经由IoT边缘本身映射。有一种方法可以解决这个问题。如果你需要的话,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2021-07-24 21:45:38

请参考我在这里Azure IoT Edge API module cannot be accessed中发布的问题。对于正在努力解决这种情况的任何人,您应该通过在deployment.template.json的createOptions部分中添加ExposedPorts来公开在来宾VM上运行的边缘模块容器,如下所示。并且VM的IPv4地址也应该与相关端口一起使用。

代码语言:javascript
复制
        "modules": {
        "test_flask_api": {
        "version": "1.0",
        "type": "docker",
        "status": "running",
        "restartPolicy": "always",
        "settings": {
          "image": "${MODULES.test_flask_api}",
          "createOptions": {
            "ExposedPorts": {
              "5000/tcp": {}
            },
            "HostConfig": {
              "PortBindings": {
                "5000/tcp": [
                  {
                    "HostPort": "5000"
                  }
                ]
              }
            }
          }
        }
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61992520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档