
该物联网代理(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%AFFIWARE%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必须实例化并连接到Orion Context Broker实例。以下是一个示例docker-compose文件:
当IOTA_REGISTRY_TYPE=mongodb时,还需要MongoDB数据库实例。示例中假设主机系统有/data目录用于存储数据库文件,请根据实际配置修改挂载卷。
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的安装指南的配置部分描述。
LightWeight Machine2Machine IoT Agent的特定设置(如LWM2M端口和协议的具体配置)可在其安装指南中找到。
与此镜像关联的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镜像在pm2进程管理器中运行:
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或更高版本中有效。
此外,需要“请求”更多资源(如多个核心),这可能使编排工具(Docker Engine或Kubernetes)比调度多个请求一个核心(或更少)的容器更难安排(后者可调度到多个节点,不必寻找有足够可用核心的单个节点)。
有关高性能场景下系统和Node.js配置的更多详细信息,请参考管理指南。
如果使用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()语句。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务