
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该物联网代理(IoT Agent)旨在作为OMA Lightweight M2M协议与上下文broker的https://swagger.lab.fiware.org/?url=https://raw.githubusercontent.com/Fiware/specifications/master/OpenAPI/ngsiv2/ngsiv2-openapi.json%E6%8E%A5%E5%8F%A3%E4%B9%8B%E9%97%B4%E7%9A%84%E6%A1%A5%E6%A2%81%E3%80%82%E5%AE%83%E5%9F%BA%E4%BA%8Ehttps://github.com/telefonicaid/iotagent-node-lib%E6%9E%84%E5%BB%BA%EF%BC%8C%E6%98%AFhttps://www.fiware.org/%E9%A1%B9%E7%9B%AE%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E3%80%82%E6%9C%89%E5%85%B3FIWARE IoT Agents框架的更多通用信息、架构及常见交互模型,可参考该库的GitHub仓库。
适用于需要通过LWM2M协议接入物联网设备,并将设备数据同步到上下文broker的场景,例如:
IoT Agent必须实例化并连接到https://fiware-orion.readthedocs.io/en/latest/%E5%AE%9E%E4%BE%8B%E3%80%82%E4%BB%A5%E4%B8%8B%E6%98%AF%E4%B8%80%E4%B8%AA%E7%A4%BA%E4%BE%8B%60docker-compose%60%E6%96%87%E4%BB%B6%EF%BC%9A
当IOTA_REGISTRY_TYPE=mongodb时,还需要https://www.mongodb.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%9E%E4%BE%8B%E3%80%82%E7%A4%BA%E4%BE%8B%E4%B8%AD%E5%81%87%E8%AE%BE%E4%B8%BB%E6%9C%BA%E7%B3%BB%E7%BB%9F%E6%9C%89%60/data%60%E7%9B%AE%E5%BD%95%E7%94%A8%E4%BA%8E%E5%AD%98%E5%82%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6%EF%BC%8C%E8%AF%B7%E6%A0%B9%E6%8D%AE%E5%AE%9E%E9%99%85%E9%85%8D%E7%BD%AE%E4%BF%AE%E6%94%B9%E6%8C%82%E8%BD%BD%E5%8D%B7%E3%80%82
yamlversion: "3.1" volumes: mongodb: ~ services: iot-agent: image: fiware/lightweightm2m-iotagent hostname: iot-agent container_name: fiware-iot-agent depends_on: - mongodb expose: - "4041" - "5683" ports: - "4041:4041" - "5683:5683" environment: - "IOTA_CB_HOST=orion" # 上下文broker主机名 - "IOTA_CB_PORT=1026" # 上下文broker端口 - "IOTA_NORTH_PORT=4041" # 配置IoT Agent和接收上下文更新的端口 - "IOTA_REGISTRY_TYPE=mongodb" # 设备信息存储类型(内存或数据库) - "IOTA_MONGO_HOST=mongodb" # MongoDB主机名 - "IOTA_MONGO_PORT=27017" # MongoDB端口 - "IOTA_MONGO_DB=iotagent-lwm2m" # MongoDB数据库名 - "LWM2M_PORT=5683" # IoT Agent监听设备流量的端口 mongodb: image: mongo:3.6 hostname: mongodb container_name: db-mongo ports: - "27017:27017" command: --bind_ip_all --smallfiles volumes: - mongodb:/data orion: image: fiware/orion hostname: orion container_name: fiware-orion depends_on: - mongodb expose: - "1026" ports: - "1026:1026" command: -dbhost mongodb
许多设置可通过Docker环境变量配置。典型的IoT Agent容器由以下环境变量驱动:
IOTA_CB_HOST - 用于更新上下文的上下文broker主机名IOTA_CB_PORT - 上下文broker监听上下文更新的端口IOTA_NORTH_PORT - 用于配置IoT Agent和接收上下文broker更新的端口IOTA_REGISTRY_TYPE - IoT设备信息的存储方式(内存或数据库)IOTA_MONGO_HOST - MongoDB主机名(用于存储设备和服务信息)IOTA_MONGO_PORT - MongoDB监听端口IOTA_MONGO_DB - MongoDB中使用的数据库名LWM2M_PORT - IoT Agent监听IoT设备流量的端口更多信息
所有IoT Agent通用参数的完整覆盖项在IoT Agent Library的https://iotagent-node-lib.readthedocs.io/en/latest/installationguide/index.html#configuration%E7%9A%84%E9%85%8D%E7%BD%AE%E9%83%A8%E5%88%86%E6%8F%8F%E8%BF%B0%E3%80%82
LightWeight Machine2Machine IoT Agent的特定设置(如LWM2M端口和协议的具体配置)可在其https://fiware-iotagent-lwm2m.readthedocs.io/en/latest/administrationGuide/index.html#configuration%E4%B8%AD%E6%89%BE%E5%88%B0%E3%80%82
与此镜像关联的https://github.com/telefonicaid/lwm2m-node-lib/blob/master/docker/Dockerfile%E5%8F%AF%E9%80%9A%E8%BF%87%E5%A4%9A%E7%A7%8D%E6%96%B9%E5%BC%8F%E6%9E%84%E5%BB%BA%E9%95%9C%E5%83%8F%EF%BC%9A
默认情况下,Dockerfile从GitHub直接获取代码库的最新版本(build-arg为可选):
consoledocker build -t iot-agent . --build-arg DOWNLOAD=latest
可通过构建参数DOWNLOAD=stable获取最新稳定版本:
consoledocker build -t iot-agent . --build-arg DOWNLOAD=stable
也可通过DOWNLOAD=<version>获取特定版本:
consoledocker build -t iot-agent . --build-arg DOWNLOAD=1.7.0
要从GitHub仓库的自己fork下载代码,需在docker build命令中添加GITHUB_ACCOUNT、GITHUB_REPOSITORY和SOURCE_BRANCH参数(默认master):
consoledocker build -t iot-agent . \ --build-arg GITHUB_ACCOUNT=<你的账号> \ --build-arg GITHUB_REPOSITORY=<你的仓库> \ --build-arg SOURCE_BRANCH=<你的分支> \ --target=distroless|pm2|slim
若要直接从本地源码构建,请将现有Dockerfile复制到仓库根目录,并修改为复制本地源码:
DockerfileCOPY . /opt/iota-lwm2m/
完整说明可在Dockerfile中找到。
使用PM2/Distroless
Docker镜像中的IoT Agent可通过关联的pm2镜像在http://pm2.keymetrics.io/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%99%A8%E4%B8%AD%E8%BF%90%E8%A1%8C%EF%BC%9A
consoledocker run --name iotagent -d fiware/lightweightm2m-iotagent:<tag>-pm2
也可通过关联的distroless镜像在无发行版容器中运行:
consoledocker run --name iotagent -d fiware/lightweightm2m-iotagent:<tag>-distroless
Docker Secrets
作为通过环境变量传递敏感信息的替代方案,可在某些敏感环境变量后附加_FILE,使初始化脚本从容器中的文件加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker secrets加载密码。例如:
consoledocker run --name iotagent -e IOTA_AUTH_PASSWORD_FILE=/run/secrets/password -d fiware/lightweightm2m-iotagent
目前支持_FILE后缀的变量包括:
IOTA_AUTH_USERIOTA_AUTH_PASSWORDIOTA_AUTH_CLIENT_IDIOTA_AUTH_CLIENT_SECRETIOTA_MONGO_USERIOTA_MONGO_PASSWORDLinux系统上的默认ulimit设置假设多个用户共享系统,限制了每个用户使用的资源数量。这些默认设置对于高性能服务器通常过低,应进行调整。在高性能场景下,我们建议对Lightweight OMA M2M IoTAgent服务器进行以下ulimit更改:
consoleulimit -n 65535 # nofile: 最大打开文件描述符数(大多数系统不允许设置此值) ulimit -c unlimited # core: 创建的核心文件的最大大小 ulimit -l unlimited # memlock: 可锁定到内存中的最大大小
如果仅进行轻量测试和开发,可忽略这些设置,系统仍能正常工作。
要在容器中设置ulimit,需使用以下附加--ulimit标志运行Lightweight OMA M2M IoTAgent Docker容器:
consoledocker run --ulimit nofile=65535:65535 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 \ --name iotagent -d fiware/lightweightm2m-iotagent
由于“unlimited”不被支持作为值,核心和memlock值设置为100 GB。如果系统RAM超过100 GB,应增加此值以匹配系统可用RAM。
注意:
--ulimit标志仅在Docker 1.6或更高版本中有效。
此外,需要“请求”更多资源(如多个核心),这可能使编排工具(https://docs.docker.com/engine%E6%88%96https://kubernetes.io%EF%BC%89%E6%AF%94%E8%B0%83%E5%BA%A6%E5%A4%9A%E4%B8%AA%E8%AF%B7%E6%B1%82%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%BF%83%EF%BC%88%E6%88%96%E6%9B%B4%E5%B0%91%EF%BC%89%E7%9A%84%E5%AE%B9%E5%99%A8%E6%9B%B4%E9%9A%BE%E5%AE%89%E6%8E%92%EF%BC%88%E5%90%8E%E8%80%85%E5%8F%AF%E8%B0%83%E5%BA%A6%E5%88%B0%E5%A4%9A%E4%B8%AA%E8%8A%82%E7%82%B9%EF%BC%8C%E4%B8%8D%E5%BF%85%E5%AF%BB%E6%89%BE%E6%9C%89%E8%B6%B3%E5%A4%9F%E5%8F%AF%E7%94%A8%E6%A0%B8%E5%BF%83%E7%9A%84%E5%8D%95%E4%B8%AA%E8%8A%82%E7%82%B9%EF%BC%89%E3%80%82
有关高性能场景下系统和Node.js配置的更多详细信息,请参考https://fiware-iotagent-lwm2m.readthedocs.io/en/latest/administrationGuide/index.html%E3%80%82
如果使用MongoDB作为数据持久化机制(即IOTA_REGISTRY_TYPE=mongodb),设备和服务组详细信息将从数据库检索。IoT Agent数据库的默认名称为iotagentlm2m。可通过创建适当的索引优化数据库访问。
例如:
consoledocker exec <mongo-db-container-name> mongo --eval ' conn = new Mongo(); db = conn.getDB("iotagentlm2m"); db.createCollection("devices"); db.devices.createIndex({"_id.service": 1, "_id.id": 1, "_id.type": 1}); db.devices.createIndex({"_id.type": 1}); db.devices.createIndex({"_id.id": 1}); db.createCollection("groups"); db.groups.createIndex({"_id.resource": 1, "_id.apikey": 1, "_id.service": 1}); db.groups.createIndex({"_id.type": 1});' > /dev/null
可使用IOTA_MONGO_DB环境变量更改数据库名称。如果使用其他数据库,请修改上述conn.getDB()语句。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务