爱快 Docker NodeRed Tcp服务器远程连接试验

文章描述了一位用户在UbuntuServer上通过Docker运行NodeRed,并通过爱快硬路由进行远程访问。在尝试使用NodeRed的TCPin节点建立远程TCP服务器时遇到问题,发现是Docker容器未开放相应端口导致的。解决方法是更新Docker运行命令,添加端口映射以开放2333端口,从而成功实现了远程TCP连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        有一台基于4415软路由安装的ubuntu server系统,在Ubuntu上通过Docker安装了NodeRed。ubuntu通过爱快硬路由与外网连接。爱快硬路由通过动态域名和端口映射实现远程访问ubuntu。

平时通过如下命令运行NodeRed镜像:

 docker run -it --rm -e TZ="Asia/Shanghai" -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red

  今天想通过NodeRed 的TCP in节点实现tcp sever 远程连接试验。开始构建本地回环试验成功,

  源码如下:

[
    {
        "id": "d84cf2b1f8837955",
        "type": "tab",
        "label": "本地TCP回环试验",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "85e364175e90fb9a",
        "type": "inject",
        "z": "d84cf2b1f8837955",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 870,
        "y": 260,
        "wires": [
            [
                "a8c3cdb131b59931"
            ]
        ]
    },
    {
        "id": "ecd663e985f7b601",
        "type": "debug",
        "z": "d84cf2b1f8837955",
        "name": "debug 8",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1020,
        "y": 160,
        "wires": []
    },
    {
        "id": "665e6d16a4850830",
        "type": "tcp in",
        "z": "d84cf2b1f8837955",
        "name": "",
        "server": "server",
        "host": "",
        "port": "3000",
        "datamode": "stream",
        "datatype": "utf8",
        "newline": "",
        "topic": "",
        "trim": false,
        "base64": false,
        "tls": "",
        "x": 860,
        "y": 160,
        "wires": [
            [
                "ecd663e985f7b601"
            ]
        ]
    },
    {
        "id": "a8c3cdb131b59931",
        "type": "tcp out",
        "z": "d84cf2b1f8837955",
        "name": "",
        "host": "127.0.0.1",
        "port": "3000",
        "beserver": "client",
        "base64": false,
        "end": false,
        "tls": "",
        "x": 1030,
        "y": 260,
        "wires": []
    }
]

 本地试验成功,开始远程试验。远程试验设置TCP端口为2333,同时爱快软路由的端口映射开放2333端口,设置如图:

 远程TCP server 流图

  节点设置,注意红线处设置。

 流图部署完成后,使用卓岚TCP&UDP调试工具远程连接tcp服务器,但并没有成功。

网络调试工具

 经过多次试验终于发现是由于docker没有开放2333端口导致连接试验不成功。后在命令中开放端口得以成功。

增加开放端口完整命令如下:

docker run -it --rm -e TZ="Asia/Shanghai" -p 2333:2333 -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red

Docker绑定多个端口的实现

 加多个-p即可

关于端口可参考博主alden_ygq的博客

### 如何在路由器上使用Docker部署MQTT服务器 #### 准备工作 为了成功地在路由器上通过Docker部署MQTT服务器,需先确认路由器具备足够的硬件资源来运行Docker容器,并已安装好Linux操作系统以及完成了必要的软件包更新。对于Docker的安装,在大多数情况下可以通过官方文档获取最新的指导说明[^1]。 #### 安装Docker 确保路由器能够访问互联网以便下载所需的依赖项和Docker镜像。按照标准流程执行Docker的安装命令: ```bash curl -fsSL https://get.docker.com | sh ``` 此脚本会自动检测系统的发行版并完成Docker及其相关工具链的安装[^2]。 #### 获取MQTT Docker镜像 一旦Docker环境准备好之后,下一步就是从Docker Hub拉取MQTT Broker(如EMQX)的官方镜像。这一步骤可通过简单的`docker pull`命令实现: ```bash docker pull emqx/emqx:latest ``` 上述命令将会把最新版本的EMQX MQTT broker作为Docker镜像下载下来[^3]。 #### 启动MQTT服务 启动MQTT服务可以考虑持久化存储配置文件和其他重要数据,这样即使重启设备也能保留之前的设置。下面是一个典型的例子展示如何创建一个带有端口映射和服务名定义的MQTT实例: ```bash docker run -d \ --name mqtt-broker \ -p 1883:1883 \ -p 8883:8883 \ -p 18083:18083 \ -v /path/to/config/on/router:/opt/emqx/etc \ emqx/emqx:latest ``` 这里假设已经有一个路径指向本地磁盘上的某个目录用于保存配置文件;如果尚未有,则需要提前创建该位置。 #### 测试MQTT连接 最后,验证MQTT服务是否正常运作非常重要。可借助专门设计用来测试MQTT协议通信的应用程序来进行这项检查,比如Mosquitto客户端或其他任何兼容的库或应用程序。尝试向主题发布消息再订阅相同的主题看能否接收到回显的消息即可证明一切就绪。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值