可选:为适用于的 IDT 配置 Docker 容器Amazon IoT Greengrass - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

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

可选:为适用于的 IDT 配置 Docker 容器Amazon IoT Greengrass

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

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

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

  • 使用 Docker 映像。Docker 映像安装了 Amazon IoT Greengrass Core 软件和依赖项。

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

    注意

    Amazon IoT Greengrass不提供码头文件或码头图像Amazon IoT GreengrassCore 软件 1.11.1 版本。要在您的自定义容器映像上运行 IDT 测试,映像必须包含由 Amazon IoT Greengrass 提供的 Dockerfile 中定义的依赖项。

在 Docker 容器中运行 Amazon IoT Greengrass 时,不支持以下功能:

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

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

配置由 Amazon IoT Greengrass 提供的 Docker 映像

请按照以下步骤配置 Amazon IoT Greengrass Docker 映像以运行 IDT 测试。

先决条件

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

  • 必须在您的主机上安装以下软件和版本,基于Amazon Command Line Interface(Amazon CLI) 版本。

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

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

      注意

      要升级到以后的Amazon CLI版本 2,您必须重复MSI 安装过程。

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

    • Python版本 3.6 或更高版本。

    • pip 版本 18.1 或更高版本。

    • Amazon CLI版本 1.17.10 或更高版本

      • 安装Amazon CLI版本 1,请参阅安装Amazon CLI版本 1.

      • 配置Amazon CLI,请参阅配置Amazon CLI.

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

        pip install awscli --upgrade --user
      注意

      如果您将MSI 安装的Amazon CLI版本 1,请注意以下事项:

      • 如果Amazon CLI版本 1 安装过程中未能安装 botocore,请尝试使用Python 和 pip 安装.

      • 要升级到以后的Amazon CLI版本 1,您必须重复 MSI 安装过程。

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

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

 

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

    要从 Amazon ECR 下载 Docker 映像,请完成第 1 步:获取Amazon IoT GreengrassAmazon ECR 提供容器镜像. 然后,返回到本主题以继续配置。

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

  3. 要运行 Amazon 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> 值。

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

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

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

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

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

      要获取 Amazon 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> 替换为目标镜像的存储库的名称以及标签。

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

      要获取 Amazon 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> 替换为目标镜像的存储库的名称以及标签。

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

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

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

    使用 IDT 进行测试时,请勿包含 --entrypoint /greengrass-entrypoint.sh \ 参数,该参数针对常规 Amazon IoT Greengrass 使用运行镜像。

  4. 下一步: 配置Amazon凭证和device.jsonfile.

配置 Amazon IoT Greengrass 提供的 dockerfile

请按照以下步骤配置从 Amazon IoT Greengrass Dockerfile 构建的 Docker 映像以运行 IDT 测试。

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

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

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

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

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

  6. 要运行 Amazon 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> 值。

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

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

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

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

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

      要获取 Amazon 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> 替换为目标镜像的存储库的名称以及标签。

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

      要获取 Amazon 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> 替换为目标镜像的存储库的名称以及标签。

      例如: 要指向最新版本的Amazon IoT GreengrassCore 软件

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

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

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

    使用 IDT 进行测试时,请勿包含 --entrypoint /greengrass-entrypoint.sh \ 参数,该参数针对常规 Amazon IoT Greengrass 使用运行镜像。

  7. 下一步: 配置Amazon凭证和device.jsonfile.

对适用于 Amazon IoT Greengrass 的 IDT 的 Docker 容器设置进行问题排查

使用以下信息可帮助解决与为 IDT 运行 Docker 容器以进行 Amazon IoT Greengrass 测试相关的问题。

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

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

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