View a markdown version of this page

可选:为 IDT 配置你的 Docker 容器 AWS IoT Greengrass - AWS IoT Greengrass

终止支持通知:2026 年 10 月 7 日, AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 AWS IoT Greengrass V1 资源。如需更多信息,请访问迁移自 AWS IoT Greengrass Version 1。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

可选:为 IDT 配置你的 Docker 容器 AWS IoT Greengrass

AWS IoT Greengrass 提供了 Docker 镜像和 Dockerfile,可以更轻松地在 Docker 容器中运行 AWS IoT Greengrass 核心软件。设置 AWS IoT Greengrass 容器后,您可以运行 IDT 测试。目前,只有 x86_64 Docker 架构支持运行适用于 AWS IoT Greengrass的 IDT。

此功能需要 IDT v2.3.0 或更高版本。

设置 Docker 容器以运行 IDT 测试的过程取决于您使用的是提供的 Docker 镜像还是使用的 Dockerfile。 AWS IoT Greengrass

  • 使用 Docker 映像。Docker 镜像安装了 AWS IoT Greengrass 核心软件和依赖项。

  • 使用 Dockerfile。Dockerfile 包含可用于构建自定义 AWS IoT Greengrass 容器镜像的源代码。可对镜像进行修改以在不同的平台架构上运行或减少镜像的大小。

    注意

    AWS IoT Greengrass 不为 AWS IoT Greengrass 核心软件版本 1.11.1 提供 Dockerfile 或 Docker 镜像。要对您自己的自定义容器映像运行 IDT 测试,您的映像必须包含在提供的 Dockerfile 中定义的依赖关系。 AWS IoT Greengrass

在 Docker 容器 AWS IoT Greengrass 中运行时,以下功能不可用:

  • 在 Greengrass 容器模式下运行的连接器。要在 Docker 容器中运行连接器,该连接器必须在无容器模式下运行。要查找支持无容器模式的连接器,请参阅AWS提供的 Greengrass 连接器。其中一些连接器具有隔离模式参数,您必须将此参数设为无容器。

  • 本地设备和卷资源。在 Docker 容器中运行的用户定义 Lambda 函数必须直接访问核心上的设备和卷。

配置由提供的 Docker 镜像 AWS IoT Greengrass

按照以下步骤配置 AWS IoT Greengrass Docker 镜像以运行 IDT 测试。

先决条件

在开始本教程之前,必须执行以下操作。

  • 您必须根据您选择的 AWS Command Line Interface (AWS CLI) 版本在主机上安装以下软件和版本。

    AWS CLI version 2
    • Docker 版本 18.09 或更高版本。早期版本也可能有效,但我们建议使用 18.09 或更高版本。

    • AWS CLI 版本 2.0.0 或更高版本。

      注意

      要在 Windows 计算机上升级到更高 AWS CLI 版本 2,必须重复 MSI 安装过程。

    AWS CLI version 1
    • Docker 版本 18.09 或更高版本。早期版本也可能有效,但我们建议使用 18.09 或更高版本。

    • Python 版本 3.6 或更高版本。

    • pip 版本 18.1 或更高版本。

    • AWS CLI 版本 1.17.10 或更高版本

      • 要安装 AWS CLI 版本 1,请参阅安装 AWS CLI 版本 1。

      • 要配置 AWS CLI,请参阅配置 AWS CLI。

      • 要升级到版本 1 的最新 AWS CLI 版本,请运行以下命令。

        pip install awscli --upgrade --user
      注意

      如果你在 Windows 上使用 MSI 安装 AWS CLI 版本 1,请注意以下几点:

      • 如果 AWS CLI 版本 1 安装无法安装 botocore,请尝试使用 Pyth on 和 pip 安装。

      • 要升级到更高 AWS CLI 版本 1,必须重复 MSI 安装过程。

  • 要访问 Amazon Elastic Container Registry (Amazon ECR) 资源,您必须授予以下权限。

    • Amazon ECR 要求用户通过 AWS Identity and Access Management (IAM) 策略授予ecr:GetAuthorizationToken权限,然后才能向注册表进行身份验证以及从 Amazon ECR 存储库推送或拉取映像。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的 Amazon ECR 存储库策略示例和访问一个 Amazon ECR 存储库。

 

  1. 下载 Docker 映像并配置容器。您可以从 Docker Hub 或 Amazon Elastic Container Registry (Amazon ECR) 下载预构建的映像并在 Windows、macOS 和 Linux (x86_64) 平台上运行它。

    要从 Amazon ECR 下载 Docker 映像,请完成 第 1 步:获取 AWS IoT Greengrass 来自亚马逊 ECR 的容器图片 中的所有步骤。然后,返回到本主题以继续配置。

  2. 仅限 Linux 用户:请确保运行 IDT 的用户有权运行 Docker 命令。有关更多信息,请参阅 Docker 文档中的以非根用户身份管理 Docker。

  3. 要运行 AWS IoT Greengrass 容器,请使用适用于您的操作系统的命令:

    Linux
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ -v <host-path-to-kernel-config-file>:<container-path> \ <image-repository>:<tag>
    • <host-path-to-kernel-config-file>替换为主机上内核配置文件的路径以及<container-path>容器中装入卷的路径。

      主机上的内核配置文件通常位于 /proc/config.gz 或 /boot/config-<kernel-release-date> 中。你可以跑uname -r去找<kernel-release-date>值。

      示例:从 /boot/config-<kernel-release-date> 装载 Config 文件

      -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \

      示例:从 proc/config.gz 装载 Config 文件

      -v /proc/config.gz:/proc/config.gz \
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令。

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    macOS
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    Windows
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    重要

    使用 IDT 进行测试时,请勿包含用于运行图像以供一般 AWS IoT Greengrass 用途的--entrypoint /greengrass-entrypoint.sh \参数。

  4. 下一步:配置您的 AWS 凭据和device.json文件。

配置由提供的 dockerfile AWS IoT Greengrass

按照以下步骤配置从 Dockerf AWS IoT Greengrass ile 构建的 Docker 镜像以运行 IDT 测试。

  1. 从 AWS IoT Greengrass Docker 软件,将 Dockerfile 包下载到您的主机并将其解压缩。

  2. 打开 README.md。接下来的三个步骤将参考此文件中的部分。

  3. 请确保您满足先决条件部分中的要求。

  4. 仅限 Linux 用户:完成启用符号链接和硬链接保护以及启用 IPv4 网络转发步骤。

  5. 要构建 Docker 映像,请完成步骤 1。构建 AWS IoT Greengrass Docker 镜像。然后,返回到本主题以继续配置。

  6. 要运行 AWS IoT Greengrass 容器,请使用适用于您的操作系统的命令:

    Linux
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ -v <host-path-to-kernel-config-file>:<container-path> \ <image-repository>:<tag>
    • <host-path-to-kernel-config-file>替换为主机上内核配置文件的路径以及<container-path>容器中装入卷的路径。

      主机上的内核配置文件通常位于 /proc/config.gz 或 /boot/config-<kernel-release-date> 中。你可以跑uname -r去找<kernel-release-date>值。

      示例:从 /boot/config-<kernel-release-date> 装载 Config 文件

      -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \

      示例:从 proc/config.gz 装载 Config 文件

      -v /proc/config.gz:/proc/config.gz \
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令。

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    macOS
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    Windows
    docker run --rm --init -it -d --name aws-iot-greengrass \ -p 8883:8883 \ <image-repository>:<tag>
    • 将<image-repository>:<tag>在命令中替换为存储库的名称和目标图像的标签。

      示例:指向最新版本的 AWS IoT Greengrass Core 软件

      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

      要获取 AWS IoT Greengrass Docker 镜像列表,请运行以下命令:

      aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
    重要

    使用 IDT 进行测试时,请勿包含用于运行图像以供一般 AWS IoT Greengrass 用途的--entrypoint /greengrass-entrypoint.sh \参数。

  7. 下一步:配置您的 AWS 凭据和device.json文件。

对适用于 IDT 的 Docker 容器设置进行故障排除 AWS IoT Greengrass

使用以下信息来帮助解决运行适用于 IDT 的 Docker 容器进行测试时遇到的问题。 AWS IoT Greengrass

警告:加载配置文件时出错:/home/user/。 docker/config.json-stat /home/ user/<. > docker/config.json:权限被拒绝

如果在 Linux 上运行 docker 命令时出现此错误,请运行以下命令。将以下命令替换<user>为运行 IDT 的用户。

sudo chown <user>:<user> /home/<user>/.docker -R sudo chmod g+rwx /home/<user>/.docker -R