

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

# 在 Docker 容器中运行 AWS IoT Greengrass 核心软件
<a name="run-greengrass-docker"></a>

AWS IoT Greengrass 可以配置为在 Docker 容器中运行。Docker 是一个平台，为您提供了构建、运行、测试和部署基于 Linux 容器的应用程序的工具。运行 AWS IoT Greengrass Docker 镜像时，您可以选择是否向 Docker 容器提供 AWS 凭据，并允许 C AWS IoT Greengrass ore 软件安装程序自动配置 Greengrass 核心设备运行 AWS 所需的资源。如果您不想提供 AWS 凭证，则可以手动配置 AWS 资源并在 Docker 容器中运行 C AWS IoT Greengrass ore 软件。

**Topics**
+ [支持的平台和要求](#greengrass-docker-supported-platforms)
+ [软件下载](#greengrass-docker-downloads)
+ [选择如何配置 AWS 资源](#greengrass-docker-resource-provisioning)
+ [从 Dockerfile 中生成 AWS IoT Greengrass 镜像](build-greengrass-dockerfile.md)
+ [通过自动 AWS IoT Greengrass 配置在 Docker 中运行](run-greengrass-docker-automatic-provisioning.md)
+ [使用手动 AWS IoT Greengrass 配置在 Docker 中运行](run-greengrass-docker-manual-provisioning.md)
+ [在 Docker AWS IoT Greengrass 容器中进行故障排除](docker-troubleshooting.md)

## 支持的平台和要求
<a name="greengrass-docker-supported-platforms"></a>

主机必须满足以下最低要求才能在 Docker 容器中安装和运行 C AWS IoT Greengrass ore 软件：
+ <a name="docker-host-reqs"></a>支持互联网连接的基于 Linux 的操作系统。
+ <a name="docker-engine-reqs"></a>[Docker Engine](https://docs.docker.com/engine/install/) 18.09 版本或更高版本。
+ <a name="docker-compose-reqs"></a>（可选）[Docker Compose](https://docs.docker.com/compose/install/) 1.22 版本或更高版本。只有当您想使用 Docker Compose CLI 来运行 Docker 映像时，才需要 Docker Compose。

要在 Docker 容器内运行 Lambda 函数组件，必须配置容器以满足其它要求。有关更多信息，请参阅[Lambda 函数要求](setting-up.md#greengrass-v2-lambda-requirements)。

### 在进程模式下运行组件
<a name="docker-container-mode-limitation"></a>

AWS IoT Greengrass 不支持在 Docker 容器内的隔离运行时环境中运行 Lambda 函数或 AWS提供的组件。 AWS IoT Greengrass 您必须在没有任何隔离的情况下在进程模式下运行这些组件。

配置 Lambda 函数组件时，请将隔离模式设置为**无容器**。有关更多信息，请参阅 [运行 AWS Lambda 函数](run-lambda-functions.md)。

部署以下任何 AWS提供的组件时，请更新要将`containerMode`参数设置为的每个组件的配置。`NoContainer`有关配置更新的更多信息，请参阅[更新组件配置](update-component-configurations.md)。
+ [CloudWatch metrics](cloudwatch-metrics-component.md)
+ [Device Defender](device-defender-component.md)
+ [Firehose](kinesis-firehose-component.md)
+ [Modbus-RTU 协议适配器](modbus-rtu-protocol-adapter-component.md)
+ [Amazon SNS](sns-component.md)

## AWS IoT Greengrass Docker 软件下载
<a name="greengrass-docker-downloads"></a>

AWS IoT Greengrass 提供了 Dockerfile 来构建在亚马逊 Linux 2 (x86\$164) 基础映像上安装了 AWS IoT Greengrass 核心软件和依赖项的容器镜像。您可以修改 Dockerfile 中的基础映像，使其在不同的平台架构 AWS IoT Greengrass 上运行。

从中下载 Dockerfile 软件包。[GitHub](https://github.com/aws-greengrass/aws-greengrass-docker)

Dockerfile 使用的是旧版本的 Greengrass。您应该更新文件，以使用您需要的 Greengrass 版本。有关从 Dockerfile 构建 AWS IoT Greengrass 容器镜像的信息，请参阅。[从 Dockerfile 中构建 AWS IoT Greengrass 容器镜像](build-greengrass-dockerfile.md)

## 选择如何配置 AWS 资源
<a name="greengrass-docker-resource-provisioning"></a>

在 Docker 容器中安装 AWS IoT Greengrass 核心软件时，您可以选择是自动配置 Greengrass 核心设备运行所需的 AWS 资源，还是使用手动配置的资源。
+ **自动资源预置**-当您首次运行 AWS IoT Greengrass 容器映像时，安装程序会预置 AWS IoT 事物、事物组、IAM AWS IoT 角色和角色别名。 AWS IoT 安装程序还可以将本地开发工具部署到核心设备，因此您可以使用该设备开发和测试自定义软件组件。要选择自动预置这些资源，您必须向 Docker 映像提供 AWS 凭证作为环境变量。

  要使用自动预置，您必须设置 Docker 环境变量 `PROVISION=true` 并挂载凭证文件，才能为容器提供 AWS 凭证。
+ **手动资源配置**-如果您不想为容器提供 AWS 凭证，则可以在运行 AWS IoT Greengrass 容器映像之前手动配置 AWS 资源。您必须创建配置文件，以便向 Docker 容器中的 C AWS IoT Greengrass ore 软件安装程序提供有关这些资源的信息。

  要使用手动预置，您必须设置 Docker 环境变量 `PROVISION=false`。手动预置是默认选项。

有关更多信息，请参阅[从 Dockerfile 中构建 AWS IoT Greengrass 容器镜像](build-greengrass-dockerfile.md)。