

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 可选：为 IDT 配置你的 Docker 容器 AWS IoT Greengrass
<a name="docker-config-setup"></a>

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-config-setup-docker-image)。Docker 镜像安装了 AWS IoT Greengrass 核心软件和依赖项。
+ [使用 Dockerfile](#docker-config-setup-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 中运行时，以下功能不可用：<a name="docker-image-unsupported-features"></a>
+ 在 **Greengrass 容器模式**下运行的[连接器](connectors.md)。要在 Docker 容器中运行连接器，该连接器必须在**无容器**模式下运行。要查找支持**无容器**模式的连接器，请参阅[AWS提供的 Greengrass 连接器](connectors-list.md)。其中一些连接器具有隔离模式参数，您必须将此参数设为**无容器**。
+ [本地设备和卷资源](access-local-resources.md)。在 Docker 容器中运行的用户定义 Lambda 函数必须直接访问核心上的设备和卷。

## 配置由提供的 Docker 镜像 AWS IoT Greengrass
<a name="docker-config-setup-docker-image"></a>

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

**先决条件**

在开始本教程之前，必须执行以下操作。<a name="docker-image-prereq-list"></a>
+ 您必须根据您选择的 AWS Command Line Interface (AWS CLI) 版本在主机上安装以下软件和版本。

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/) 版本 18.09 或更高版本。早期版本也可能有效，但我们建议使用 18.09 或更高版本。
  + AWS CLI 版本 2.0.0 或更高版本。
    + 要安装 AWS CLI 版本 2，请参阅[安装 AWS CLI 版本 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。
    + 要配置 AWS CLI，请参阅[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
**注意**  
要在 Windows 计算机上升级到更高 AWS CLI 版本 2，必须重复 [MSI 安装](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html)过程。

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/) 版本 18.09 或更高版本。早期版本也可能有效，但我们建议使用 18.09 或更高版本。
  + [Python](https://www.python.org/downloads/) 版本 3.6 或更高版本。
  + [pip](https://pip.pypa.io/en/stable/installing) 版本 18.1 或更高版本。
  + AWS CLI 版本 1.17.10 或更高版本
    + 要安装 AWS CLI 版本 1，请参阅[安装 AWS CLI 版本 1](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)。
    + 要配置 AWS CLI，请参阅[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
    + 要升级到版本 1 的最新 AWS CLI 版本，请运行以下命令。

      ```
      pip install awscli --upgrade --user
      ```
**注意**  
如果你在 Windows 上使用 [MSI 安装](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows) AWS CLI 版本 1，请注意以下几点：  
如果 AWS CLI 版本 1 安装无法安装 botocore，请尝试使用 Pyth [on 和 pip](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-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 存储库策略示例](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html)和[访问一个 Amazon ECR 存储库](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket)。

 

1. 下载 Docker 映像并配置容器。您可以从 [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) 或 [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) (Amazon ECR) 下载预构建的映像并在 Windows、macOS 和 Linux (x86\_64) 平台上运行它。

   要从 Amazon ECR 下载 Docker 映像，请完成 [第 1 步：获取 AWS IoT Greengrass 来自亚马逊 ECR 的容器图片](run-gg-in-docker-container.md#docker-pull-image) 中的所有步骤。然后，返回到本主题以继续配置。

1. <a name="docker-linux-non-root"></a>仅限 Linux 用户：请确保运行 IDT 的用户有权运行 Docker 命令。有关更多信息，请参阅 Docker 文档中的[以非根用户身份管理 Docker](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user)。

1. <a name="docker-run-gg-container"></a>要运行 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 \`参数。

1. <a name="docker-config-next-steps"></a>下一步：[配置您的 AWS 凭据和`device.json`文件](set-config.md)。

## 配置由提供的 dockerfile AWS IoT Greengrass
<a name="docker-config-setup-dockerfile"></a>

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

1. 从 [AWS IoT Greengrass Docker 软件](what-is-gg.md#gg-docker-download)，将 Dockerfile 包下载到您的主机并将其解压缩。

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

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

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

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

1. <a name="docker-run-gg-container"></a>要运行 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 \`参数。

1. <a name="docker-config-next-steps"></a>下一步：[配置您的 AWS 凭据和`device.json`文件](set-config.md)。

## 对适用于 IDT 的 Docker 容器设置进行故障排除 AWS IoT Greengrass
<a name="docker-config-setup-troubleshooting"></a>

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

### 警告：加载配置文件时出错：/home/user/。 docker/config.json-stat /home/ user/<. > docker/config.json：权限被拒绝
<a name="docker-config-permissions-linux"></a>

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

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