如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此仓库已弃用,建议使用 https://hub.docker.com/r/nodered/node-red
所有新版本(1.0.0及以上)将通过该渠道提供。
此处提供的最后版本为0.20.8。
本项目介绍了在Docker下运行Node-RED的多种方式。假设用户已具备Docker和Docker命令行的基本常识。
本项目还提供DockerHub上nodered/node-red-docker容器的构建,地址:https://hub.docker.com/r/nodered/node-red-docker/%E3%80%82
最简单的直接运行命令:
bashdocker run -it -p 1880:1880 --name mynodered nodered/node-red-docker
命令解析:
docker run - 运行容器,必要时先本地构建-it - 附加终端会话,以便查看运行情况-p 1880:1880 - 将本地端口1880映射到容器暴露的内部端口1880--name mynodered - 为容器指定友好的本地名称nodered/node-red-docker - 基础镜像,当前为Node-RED v0.14.5运行后,终端将显示Node-RED的启动信息:
Welcome to Node-RED =================== 8 Apr 12:13:44 - [info] Node-RED version: v0.14.5 8 Apr 12:13:44 - [info] Node.js version: v4.4.7 .... etc
此时可通过http://{主机IP}:1880访问Node-RED界面。
通过指定名称可更方便地管理容器,固定主机端口便于访问(但一次只能运行一个实例)。
若需分离终端(容器继续后台运行),按Ctrl-p``Ctrl-q。
重新附加终端(查看日志):
bashdocker attach mynodered
重启容器(如系统重启或Docker守护进程重启后):
bashdocker start mynodered
停止容器:
bashdocker stop mynodered
注意:此Dockerfile配置将flows.json文件和安装的额外节点存储在容器外部,以便重建基础容器时不会永久丢失自定义内容。
本仓库包含构建不同Node-RED Docker镜像的Dockerfile:
Alpine Linux版本可减小镜像体积(约100MB vs 约700MB),但移除了原生模块编译所需的标准依赖。如需添加带原生依赖的模块,建议使用标准镜像或扩展slim镜像以补充缺失的包。
构建镜像命令:
bashdocker build -f <版本>/Dockerfile -t mynodered:<版本> .
package.json是元文件,用于下载安装指定版本的Node-RED及其他构建时所需的npm包。Docker构建过程中,依赖将安装在/usr/src/node-red目录下。
主要修改部分:
json"dependencies": { "node-red": "0.14.x", // 设置Node-RED版本 "node-red-node-rbe": "*" // 添加额外npm包 }, "scripts": { "start": "node-red -v $FLOWS" // 容器运行时启动Node-RED的命令 }
Node-RED通过NPM start从/usr/src/node-red启动,--userDir参数指向容器的/data目录。
flows配置文件通过环境变量FLOWS设置,默认为*'flows.json'*,可在运行时通过以下命令修改:
bashdocker run -it -p 1880:1880 -e FLOWS=my_flows.json nodered/node-red-docker
Node.js运行参数可通过环境变量NODE_OPTIONS传递。例如,设置Node.js垃圾回收堆大小:
bashdocker run -it -p 1880:1880 -e NODE_OPTIONS="--max_old_space_size=128" nodered/node-red-docker
可通过以下方式为Docker中运行的Node-RED实例安装额外节点:
使用管理工具,通过容器到主机的端口转发,无需离开主机即可安装节点:
bashnpm install -g node-red-admin node-red-admin install node-red-node-openwhisk
该工具默认假设Node-RED在http://localhost:1880可用。刷新浏览器页面即可在面板中看到新添加的节点。
bashdocker exec -it mynodered /bin/bash
进入容器命令行后,运行npm安装命令:
bashcd /data npm install node-red-node-smooth exit docker stop mynodered docker start mynodered
刷新浏览器页面即可看到新节点。
将主机目录挂载为数据卷运行容器,可在主机目录中手动运行npm install,主机目录中的文件将自动同步到容器文件系统:
bashdocker run -it -p 1880:1880 -v ~/.node-red:/data --name mynodered nodered/node-red-docker
在主机中安装节点:
bashcd ~/.node-red npm install node-red-node-smooth docker stop mynodered docker start mynodered
注意:带原生依赖的模块将在主机架构上编译,仅当主机架构与容器基础镜像匹配时才能在容器中工作。建议通过容器shell安装原生模块,或更新项目package.json后重新构建。
以公共Node-RED镜像为基础创建新Docker镜像,可在构建过程中安装额外节点。
以下Dockerfile构建包含flightaware模块的自定义Node-RED镜像:
dockerfileFROM nodered/node-red-docker RUN npm install node-red-contrib-flightaware
也可修改本仓库的package.json后从头构建镜像,这还允许修改安装的Node-RED版本。
为避免容器销毁时丢失自定义内容,可通过以下方式管理用户数据:
容器内的修改(如手动添加节点或创建flows)仅在容器生命周期内有效。可将容器当前状态提交为新镜像:
bashdocker commit mynodered custom-node-red-docker
销毁mynodered容器后,可使用custom-node-red-docker镜像恢复实例。
Docker支持使用数据卷在容器外部存储持久化或共享数据,数据卷中的文件在容器移除后仍存在。
Node-RED使用/data目录存储用户配置数据。将数据卷挂载到该目录可使配置数据保存在容器外部,甚至在容器实例间共享。
创建并使用命名数据卷:
bashdocker volume create --name node_red_user_data docker volume ls # 查看卷 docker run -it -p 1880:1880 -v node_red_user_data:/data --name mynodered nodered/node-red-docker
创建并部署示例flows后,销毁并重启容器,用户数据不会丢失:
bashdocker rm mynodered docker run -it -p 1880:1880 -v node_red_user_data:/data --name mynodered nodered/node-red-docker
更新基础容器镜像:
bashdocker pull nodered/node-red-docker docker stop mynodered docker start mynodered
最简化运行Node-RED:
bashdocker run -d -p 1880 nodered/node-red-docker
此命令将创建运行实例,使用随机端口。通过以下命令查看端口:
bashdocker ps -a
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4bbeb39dc8dc nodered/node-red-docker:latest "npm start" 4 seconds ago Up 4 seconds 0.0.0.0:49154->1880/tcp furious_yalow
通过http://{主机IP}:49154(示例端口)访问。
使用--link选项可在Docker运行时内部链接容器。
例如,运行MQTT broker容器:
bashdocker run -it --name mybroker nodered/node-red-docker
(无需全局暴露1883端口,除非需要外部访问)
运行Node-RED容器并链接broker:
bashdocker run -it -p 1880:1880 --name mynodered --link mybroker:broker nodered/node-red-docker
--link会在Node-RED实例的hosts文件中添加名为broker的条目,指向mybroker实例。暴露1880端口以便外部浏览器编辑flows。
以下flows示例可使用broker别名连接:
json[{"id":"190c0df7.e6f3f2","type":"mqtt-broker","broker":"broker","port":"1883","clientid":""},{"id":"37963300.c869cc","type":"mqtt in","name":"","topic":"test","broker":"190c0df7.e6f3f2","x":226,"y":244,"z":"f34f9922.0cb068","wires":[["802d92f9.7fd27"]]},{"id":"edad4162.1252c","type":"mqtt out","name":"","topic":"test","qos":"","retain":"","broker":"190c0df7.e6f3f2","x":453,"y":135,"z":"f34f9922.0cb068","wires":[]},{"id":"13d1cf31.ec2e31","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":226,"y":157,"z":"f34f9922.0cb068","wires":[["edad4162.1252c"]]},{"id":"802d92f9.7fd27","type":"debug","name":"","active":true,"console":"false","complete":"false","x":441,"y":261,"z":"f34f9922.0cb068","wires":[]}]
默认内部broker不暴露到Docker主机外部,如需外部访问,可在broker运行命令中添加-p 1883:1883。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务