当前位置: 首页 > news >正文

保姆级教程:在CentOS 7上用Docker Compose一键部署EdgeX Foundry 3.1(含虚拟设备服务)

保姆级教程:在CentOS 7上用Docker Compose一键部署EdgeX Foundry 3.1(含虚拟设备服务)

EdgeX Foundry作为开源物联网边缘计算框架,正成为工业4.0和智能家居领域的基础设施。本教程将带您从零开始,在CentOS 7系统上完成EdgeX 3.1的完整部署,特别包含虚拟设备服务(ds-virtual)的集成方案。整个过程就像搭积木一样简单——只要跟着步骤操作,30分钟内就能拥有完整的边缘计算平台。

1. 环境准备:打造EdgeX的温床

在开始部署前,我们需要确保系统环境满足以下要求:

  • 全新安装的CentOS 7.6+(建议最小化安装)
  • 至少4GB内存(运行所有服务约需3.2GB)
  • 20GB可用磁盘空间
  • 稳定的网络连接

系统基础配置是第一步。登录服务器后,建议立即执行这些命令:

# 关闭SELinux(避免权限问题) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # 关闭防火墙(测试环境建议操作) sudo systemctl stop firewalld sudo systemctl disable firewalld # 设置主机名 sudo hostnamectl set-hostname edgex-node

提示:生产环境应配置防火墙规则而非直接关闭,需开放端口4000(UI)、8500(Consul)、5563(MQTT)等。

2. Docker生态安装与优化

EdgeX 3.1完全容器化部署,我们需要先搭建Docker环境。以下是针对CentOS 7的优化安装方案:

# 添加Docker官方源(使用阿里云镜像加速) sudo yum install -y yum-utils sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装指定版本Docker(兼容性最佳) sudo yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io # 配置镜像加速和cgroup驱动 sudo mkdir -p /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] } EOF # 启动并设置开机自启 sudo systemctl enable --now docker

验证安装是否成功:

docker --version # 应显示19.03.15 docker run hello-world # 测试镜像拉取

接下来安装Docker Compose。EdgeX 3.1需要v2.x版本:

# 下载二进制文件(国内用户可使用代理地址) sudo curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 赋予执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证版本 docker-compose --version # 应显示2.18.1

3. 获取EdgeX部署工具链

EdgeX团队提供了compose-builder工具,可以智能生成docker-compose文件。我们先获取部署包:

# 克隆仓库(建议使用国内镜像加速) git clone https://gitee.com/mirrors_edgex/edgex-compose.git cd edgex-compose # 切换到3.1版本分支 git checkout v3.1

关键目录结构说明:

edgex-compose ├── compose-builder # 核心部署工具 ├── docker-compose-base.yml # 基础服务模板 ├── add-device-virtual.yml # 虚拟设备插件 └── Makefile # 构建脚本

4. 生成定制化部署文件

进入compose-builder目录,使用make命令生成配置文件。我们将启用两个关键选项:

  • no-secty:非安全模式(适合开发环境)
  • ds-virtual:虚拟设备服务
cd compose-builder make gen ds-virtual no-secty

生成过程会输出以下文件:

  • docker-compose.yml:主部署文件
  • .env:环境变量配置

检查生成结果:

ls -l docker-compose.yml # 应显示约200KB左右 head -n 10 docker-compose.yml # 查看文件头部

注意:如果遇到"make命令未找到",需先安装开发工具包:yum install -y make gcc

5. 服务启动与验证

现在可以拉起所有EdgeX服务了:

# 先拉取镜像(国内用户建议分段执行) docker compose pull # 后台启动所有服务 docker compose up -d

启动过程约需3-5分钟,可以通过以下命令监控状态:

# 查看容器状态(等待所有服务变为healthy) watch -n 2 'docker compose ps' # 或者查看实时日志 docker compose logs -f

常见问题排查:

  • 如果容器不断重启,检查docker compose logs [服务名]
  • 端口冲突时修改.env中的端口配置
  • 内存不足会导致某些服务启动失败

6. 访问管理界面

成功启动后,可以通过以下入口访问:

服务名称访问地址默认账号
EdgeX UIhttp://服务器IP:4000
Consul配置中心http://服务器IP:8500
虚拟设备管理http://服务器IP:59882

在EdgeX UI的"Device"页面,应该能看到自动注册的Virtual-Device设备。我们可以通过REST API测试数据采集:

curl -X GET http://localhost:59882/api/v3/device/name/Virtual-Device/command/RandomValue_Int8

预期返回结果示例:

{ "apiVersion": "v3", "statusCode": 200, "event": { "apiVersion": "v3", "id": "d3838c7a-1df5-4b0d-a3f0-af21c14a7268", "deviceName": "Virtual-Device", "sourceName": "RandomValue_Int8", "origin": 1689324567890, "readings": [ { "id": "8a90b1b2-3f4a-4e5d-b678-910111213141", "origin": 1689324567890, "deviceName": "Virtual-Device", "resourceName": "RandomValue_Int8", "profileName": "Virtual-Device", "valueType": "Int8", "value": "23" } ] } }

7. 虚拟设备高级配置

默认虚拟设备会生成随机数据,我们可以自定义其行为。首先进入Consul界面(:8500),找到edgex-core-metadata服务的配置:

  1. 导航到/v1/kv/edgex/core/3.0/edgex-core-metadata/Device/Virtual-Device
  2. 编辑配置文件,修改deviceResources部分
  3. 添加新的数据点,例如:
{ "name": "Temperature", "description": "模拟温度传感器", "properties": { "valueType": "Float32", "readWrite": "R", "minimum": "-20.0", "maximum": "60.0", "defaultValue": "25.0" } }

保存后,需要重启设备服务使配置生效:

docker compose restart device-virtual

现在可以通过API获取新的数据点:

curl http://localhost:59882/api/v3/device/name/Virtual-Device/command/Temperature

8. 生产环境优化建议

虽然我们已经完成基础部署,但在实际应用中还需要考虑:

性能调优参数(可添加到docker-compose.yml):

services: core-data: environment: - SERVICE_HOST=0.0.0.0 - MESSAGEQUEUE_HOST=edgex-redis - DATABASE_HOST=edgex-redis - METRICS_INTERVAL=60s deploy: resources: limits: cpus: '0.5' memory: 512M

日志管理方案

# 配置日志轮转 docker compose stop mkdir -p /var/log/edgex cat <<EOF | sudo tee /etc/docker/daemon.json { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF systemctl restart docker docker compose up -d

备份关键数据

# 导出Consul配置 docker exec edgex-core-consul consul kv export > edgex-config-backup.json # 备份Redis数据 docker exec edgex-redis redis-cli SAVE docker cp edgex-redis:/data/dump.rdb ./edgex-data-backup.rdb

遇到网络问题时,可以尝试替换容器镜像源。编辑.env文件,修改以下变量:

REGISTRY=registry.cn-hangzhou.aliyuncs.com IMAGE_VERSION=3.1.0

部署完成后,建议运行基础测试套件验证各服务功能:

git clone https://github.com/edgexfoundry/edgex-taf.git cd edgex-taf docker compose -f docker-compose-taf.yml up -d
http://www.jsqmd.com/news/755717/

相关文章:

  • RAISECITY框架:基于多模态LLM的智能3D城市生成技术
  • RDD API 学习
  • RT-Thread 开发踩坑记:Cortex-M7 HardFault 现场如何完整“取证”?
  • 保姆级教程:在Ubuntu 22.04上,用rknn-toolkit2把PyTorch的ResNet18变成RK3588能跑的RKNN模型
  • 人类真理宣言—— 告别旧范式的守灵者,成为真理范式的开启者(Veritas Humana Manifesto)
  • Hugging Face模型加载超快
  • 世界模型如何提升LLM智能体决策能力
  • 2025年实时影响因子:中国期刊(26.5.3更新)
  • PromptBridge技术:实现跨大模型提示词无缝迁移
  • 手机号定位神器:一键查询陌生来电归属地,地图精准展示位置
  • 超导神经元原理与生物神经元模拟技术解析
  • 第1章 Nginx 简介与架构【20260503】-001篇
  • 怎样构建高效B站视频下载系统:DownKyi专业解决方案实战
  • 端到端GUI智能体UI-Venus-1.5:革新自动化测试与RPA
  • FastClaw:一键在Mac上创建预装OpenClaw的Linux虚拟机
  • EH-TEMPO算法:开放量子系统模拟的高效解决方案
  • Claude桌面应用效率增强:claude-hooks钩子机制详解与实战
  • Claude配置编辑器:可视化定制AI助手行为,提升工作效率
  • SPATIALGEN:智能3D场景生成框架解析与应用
  • 2026年4月有名的锁紧螺母生产厂家推荐,导轨压块/锁紧螺母/径向锁紧螺母/止退螺母/丝杠锁紧螺母,锁紧螺母公司推荐 - 品牌推荐师
  • 从‘三元悖论’到现实选择:用蒙代尔-弗莱明模型看懂央行政策困境(以近期热点为例)
  • dotclaude:基于Agent Skills标准的AI编码代理技能库实战指南
  • C++27范围库扩展开发倒计时:ISO正式FDIS投票仅剩117天,这份企业级迁移路线图已被12家头部嵌入式厂商内部采用
  • 第1章 Nginx 简介与架构【20260503】-002篇-Nginx日志切割
  • Copr命令行工具实战:从RPM打包到自动化构建发布
  • TSMaster实战:手把手教你将A2L标定变量和DBC信号录进同一个BLF文件
  • 开源三指机械爪OpenClaw-CN实践指南:从欠驱动原理到ROS控制
  • 探索Taotoken平台在应对突发性API流量激增时的路由表现
  • 从Program.cs到可维护微服务:C# 13顶级语句驱动的模块化分层架构,立即提升代码复用率47%
  • 避坑指南:SolidWorks模型导入MATLAB Simscape时,插件安装失败、连接错误的常见原因与解决方案