本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在作为 Docker 容器 AWS IoT Greengrass V2 运行时部署容器化应用程序
亚马逊 Web Services 的 Salih Bakir、Giuseppe Di Bella 和 Gustav Svalander
Summary
AWS IoT Greengrass Version 2,当部署为 Docker 容器时,本机不支持运行 Docker 应用程序容器。此模式向您展示如何基于启用 Docker-in-Docker (DinD) 功能的最新版本创建自定义容器镜像。 AWS IoT Greengrass V2 借助 DinD,您可以在环境中运行容器化应用程序。 AWS IoT Greengrass V2
您可以将此模式部署为独立解决方案,也可以将其与 Amazon ECS Anywhere 等容器编排平台集成。在这两种部署模式中,您都可以保持包括 AWS IoT SiteWise 边缘处理 AWS IoT Greengrass V2 功能在内的全部功能,同时支持基于容器的可扩展部署。
先决条件和限制
先决条件
活跃 AWS 账户的.
有关一般 AWS IoT Greengrass Version 2 先决条件,请参阅 AWS IoT Greengrass Version 2 文档中的先决条件。
Docker Engine,在 Linux、macOS 或 Windows 上安装和配置。
Docker Compose(如果你使用 Docker Compose 命令行界面 (CLI) 来运行 Docker 镜像)。
一个 Linux 操作系统。
带有支持虚拟化的主机服务器的虚拟机管理程序。
系统要求:
2 GB 内存(最小值)
5 GB 可用磁盘空间(最小)
对于 AWS IoT SiteWise Edge,这是一款具有 16 GB 内存和 50 GB 可用磁盘空间的 x86_64 四核 CPU。有关 AWS IoT SiteWise 数据处理的更多信息,请参阅 AWS IoT SiteWise 文档中的数据处理包要求。
产品版本
AWS IoT Greengrass Version 2 版本 2.5.3 或更高版本
Docker-in-Docker 版本 1.0.0 或更高版本
Docker Compose 版本 1.22 或更高版本
Docker Engine 版本 20.10.12 或更高版本
限制
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按区域划分的AWS 服务
。有关特定端点,请参阅服务端点和配额,然后选择相应服务的链接。
架构
目标技术堆栈
数据源 — 生成数据进行处理的物联网设备、传感器或工业设备
AWS IoT Greengrass V2— 作为具有 D-in-D功能的 Docker 容器运行,部署在边缘基础架构上
容器化应用程序 — 作为嵌套 Docker 容器在 AWS IoT Greengrass V2 环境中运行的自定义应用程序
(可选)Amazon ECS Anywhere — 管理容器部署的 AWS IoT Greengrass V2 容器编排
其他 AWS 服务 — AWS IoT Core AWS IoT SiteWise、以及其他 AWS 服务 用于数据处理和管理
目标架构
下图显示了使用 Amazon ECS Anywhere(一种容器管理工具)的目标部署架构示例。

下图显示了如下工作流:
1:容器映像存储 — Amazon ECR 存储边缘处理所需的容器映像和任何自定义应用程序容器。 AWS IoT Greengrass
2 和 3:容器部署 — Amazon ECS Anywhere 将 AWS IoT Greengrass 容器映像从 Amazon ECR 部署到边缘站点,管理容器生命周期和部署过程。
4:组件部署 — 已部署的 AWS IoT Greengrass 核心会根据其配置自动部署其相关组件。组件包括 AWS IoT SiteWise 容器化环境中的 Edge 和其他必要的边缘处理组件。
5:数据摄取 — 完全配置完毕后, AWS IoT Greengrass 开始从边缘位置的各种 IoT 数据源提取遥测和传感器数据。
6:数据处理和云集成 — 容器化 AWS IoT Greengrass 核心使用其部署的组件(包括用于工业数据的 AWS IoT SiteWise 边缘)在本地处理数据。然后,它将处理后的数据发送到 AWS Cloud 服务部门进行进一步分析和存储。
工具
AWS 服务
Amazon ECS Anywhere 可帮助您在自己的基础设施上部署、使用和管理亚马逊 ECS 任务和服务。
亚马逊弹性计算云 (Amazon EC2) 在中提供可扩展的计算容量 AWS Cloud。您可以根据需要启动任意数量的虚拟服务器,并快速纵向扩展或缩减这些服务器。
Amazon Elastic Container Registry(Amazon ECR)是一项安全、可扩展且可靠的托管容器映像注册表服务。
AWS IoT Greengrass 是一项开源物联网(IoT)边缘运行时和云服务,可帮助您在设备上构建、部署和管理 IoT 应用程序。
AWS IoT SiteWise 可帮您大规模采集、建模、分析和可视化显示来自工业设备的数据。
其他工具
Docker
是一组平台即服务(PaaS)产品,它们利用操作系统级的虚拟化技术在容器中提供软件。 Docker Compose
是一款工具,用于定义和运行多容器应用程序。 Docker Engin
e 是一种开源容器化技术,用于构建和容器化应用程序。
代码存储库
此模式的代码可在 GitHub AWS IoT Greengrass v2 Docker-in-Docker
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
克隆并导航到存储库。 | 要克隆存储库,请使用以下命令:
要导航到该
| DevOps 工程师,AWS DevOps |
构建 Docker 映像。 | 要使用默认(最新)版本构建 Docker 镜像,请运行以下命令:
或者,要使用特定版本构建 Docker 镜像,请运行以下命令:
要验证构建,请运行以下命令:
| AWS DevOps, DevOps 工程师,应用程序开发人员 |
(可选)推送到 Amazon ECR。 |
| 应用程序开发人员、AWS DevOps、 DevOps 工程师 |
| Task | 说明 | 所需技能 |
|---|---|---|
选择身份验证方法。 | 请选择以下选项之一:
| AWS 管理员 |
配置身份验证方法。 | 对于您选择的身份验证方法,请使用以下配置指南:
| AWS 管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
Configure | 使用环境变量更新
| DevOps 工程师 |
启动并验证容器。 | 要从前台开始,请运行以下命令:
或者,要在后台启动,请运行以下命令:
要验证状态,请运行以下命令:
要监控日志,请运行以下命令:
| DevOps 工程师 |
| Task | 说明 | 所需技能 |
|---|---|---|
使用 Docker CLI 运行容器。 |
| DevOps 工程师 |
验证容器。 |
| DevOps 工程师 |
| Task | 说明 | 所需技能 |
|---|---|---|
部署应用程序。 |
| 应用程序开发人员 |
访问和测试 Docker-in-Docker。 |
| DevOps 工程师 |
| Task | 说明 | 所需技能 |
|---|---|---|
设置 Amazon ECS 集群。 |
| AWS 管理员 |
部署 Amazon ECS 任务。 |
| AWS 管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
停止容器。 |
| DevOps 工程师 |
问题排查
| 问题 | 解决方案 |
|---|---|
容器启动失败,出现权限错误。 |
警告
|
由于凭据错误,置备失败。 | 要验证凭据配置是否正确,请使用以下步骤:
确保 IAM 权限包括 |
无法连接到容器内的 Docker 守护程序。 |
|
容器的磁盘空间不足。 |
确保最小磁盘空间:5 GB 用于基本操作,50 GB 用于 AWS IoT SiteWise 边缘操作 |
构建问题。 |
|
网络连接问题。 |
验证防火墙是否允许出站 HTTPS (443) 和 MQTT (8883) 流量。 |
Greengrass 组件无法部署。 |
检查目录中特定于组件的 |
容器启动后立即退出。 |
验证是否正确设置了所有必需的环境变量 |
相关资源
AWS resources
其他资源
附加信息
要进行 AWS IoT SiteWise 边缘数据处理,Docker 必须在 AWS IoT Greengrass 环境中可用。
要运行嵌套容器,必须使用管理员级别的凭 AWS IoT Greengrass 据运行该容器。