本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
。此IoT代理旨在作为JSON与上下文代理的NGSI接口之间的桥梁。
它基于IoT Agent Node.js Library构建。有关FIWARE IoT Agents框架的更多一般信息、架构和常见交互模型,可在该库的GitHub仓库中找到。
本项目是FIWARE的一部分。更多信息请查看FIWARE目录中的IoT Agents条目。
该镜像提供了一个基于JSON协议的IoT代理,能够通过MQTT、HTTP、AMQP等多种传输方式接收IoT设备数据,并将其转换为NGSI格式与上下文代理(如Orion Context Broker)交互。主要用于构建IoT系统中设备与上下文管理平台之间的通信桥梁,实现设备数据的标准化接入和管理。
适用于需要将基于JSON协议的IoT设备数据接入FIWARE生态系统的场景,例如:
IoT代理必须实例化并连接到Orion Context Broker实例,以下是一个示例docker-compose文件。
如果设置IOTA_REGISTRY_TYPE=mongodb,则还需要MongoDB数据库实例——下方示例假设主机系统中有/data目录用于存储数据库文件,请根据实际配置修改挂载卷。
version: "3.1" volumes: mongodb: ~ services: iot-agent: image: fiware/iotagent-json hostname: iot-agent container_name: fiware-iot-agent depends_on: - mongodb expose: - "4041" - "7896" ports: - "4041:4041" - "7896:7896" environment: - "IOTA_CB_HOST=orion" - "IOTA_CB_PORT=1026" - "IOTA_NORTH_PORT=4041" - "IOTA_REGISTRY_TYPE=mongodb" - "IOTA_MONGO_HOST=mongodb" - "IOTA_MONGO_PORT=27017" - "IOTA_MONGO_DB=iotagent-json" - "IOTA_HTTP_PORT=7896" - "IOTA_PROVIDER_URL=[***]" mongodb: image: mongo:4.2 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代理Docker容器由以下环境变量驱动:
IOTA_CB_HOST - 用于更新上下文的上下文代理主机名IOTA_CB_PORT - 上下文代理监听上下文更新的端口IOTA_NORTH_PORT - 用于配置IoT代理和接收上下文代理更新的端口IOTA_REGISTRY_TYPE - IoT设备信息的存储方式(内存或数据库)IOTA_MONGO_HOST - MongoDB主机名(用于存储设备和服务信息)IOTA_MONGO_PORT - MongoDB监听端口IOTA_MONGO_DB - MongoDB中使用的数据库名称IOTA_HTTP_PORT - IoT代理监听HTTP设备流量的端口IOTA_PROVIDER_URL - 注册命令时传递给上下文代理的URL,用于上下文代理向设备下发命令时的转发地址所有IoT代理通用参数的完整覆盖说明,可参见IoT Agent Library的安装指南中的配置部分。
JSON IoT代理特有的设置(如MQTT、AMQP和HTTP的特定配置),可参见JSON IoT代理的安装指南。
与此镜像关联的Dockerfile可通过多种方式构建镜像:
Dockerfile从GitHub获取代码库的最新版本(build-arg为可选):docker build -t iot-agent . --build-arg DOWNLOAD=latest
DOWNLOAD=stable获取最新稳定版本:docker build -t iot-agent . --build-arg DOWNLOAD=stable
DOWNLOAD=<version>下载特定版本:docker build -t iot-agent . --build-arg DOWNLOAD=1.7.0
要从GitHub仓库的自定义fork下载代码,需在docker build命令中添加GITHUB_ACCOUNT、GITHUB_REPOSITORY和SOURCE_BRANCH参数(默认master):
docker build -t iot-agent . \ --build-arg GITHUB_ACCOUNT=<你的账户> \ --build-arg GITHUB_REPOSITORY=<你的仓库> \ --build-arg SOURCE_BRANCH=<你的分支> \ --target=distroless|pm2|slim
若需直接从本地源码构建,可将现有Dockerfile复制到仓库根目录,并修改为复制本地源码:
COPY . /opt/iotajson/
完整说明可参见Dockerfile本身。
Docker镜像中的IoT代理可通过pm2进程管理器运行,使用关联的pm2镜像:
docker run --name iotagent -d fiware/iotagent-json:<tag>-pm2
也可在distroless容器中运行,使用关联的distroless镜像:
docker run --name iotagent -d fiware/iotagent-json:<tag>-distroless
作为通过环境变量传递敏感信息的替代方案,可在部分敏感环境变量后附加_FILE,使初始化脚本从容器内的文件加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker Secrets加载密码。例如:
docker run --name iotagent -e IOTA_AUTH_PASSWORD_FILE=/run/secrets/password -d fiware/iotagent-json
目前,支持_FILE后缀的变量包括:
IOTA_AUTH_USERIOTA_AUTH_PASSWORDIOTA_AUTH_CLIENT_IDIOTA_AUTH_CLIENT_SECRETIOTA_MONGO_USERIOTA_MONGO_PASSWORDIOTA_MQTT_KEYIOTA_MQTT_USERNAMEIOTA_MQTT_PASSWORDIOTA_AMQP_USERNAMEIOTA_AMQP_PASSWORDLinux系统的默认ulimit设置假设多个用户共享系统,这些设置限制了每个用户的资源使用。默认设置对于高性能服务器通常过低,应进行调整。在高性能场景下,建议对IoT Agent - JSON服务器调整以下ulimit设置:
ulimit -n 65535 # nofile: 最大打开文件描述符数(多数系统不允许设置此值) ulimit -c unlimited # core: 创建的核心文件的最大大小 ulimit -l unlimited # memlock: 可锁定到内存中的最大大小
若仅进行轻量测试和开发,可忽略这些设置,系统仍能正常工作。
要在容器中设置ulimit,需使用以下额外的--ulimit标志运行IoT Agent - JSON Docker容器:
docker run --ulimit nofile=65535:65535 --ulimit core=***:*** --ulimit memlock=***:*** \ --name iotagent -d fiware/iotagent-json
由于“unlimited”不被支持,此处将core和memlock值设置为100 GB。若系统RAM超过100 GB,应增加此值以匹配可用RAM。
注意:
--ulimit标志仅在Docker 1.6及以上版本支持。
有关高性能场景下系统和Node.js配置的更多详细信息,请参阅安装指南。
若使用MongoDB作为数据持久化机制(即IOTA_REGISTRY_TYPE=mongodb),设备和服务组详情将从数据库检索。IoT代理数据库的默认名称为iotagentjson。可通过创建适当的索引优化数据库访问。
例如:
docker exec <mongo-db-container-name> mongo --eval ' conn = new Mongo(); db = conn.getDB("iotagentjson"); 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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429