从 Dockerfile 中构建 Amazon IoT Greengrass 容器镜像 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

从 Dockerfile 中构建 Amazon IoT Greengrass 容器镜像

Amazon 提供了一个 Dockerfile,你可以下载并使用它来在 Docker Amazon IoT Greengrass 容器中运行核心软件。Dockerfiles 包含用于构建 Amazon IoT Greengrass 容器镜像的源代码。

在构建 Amazon IoT Greengrass 容器镜像之前,必须配置 Dockerfile 以选择要安装的 Amazon IoT Greengrass 核心软件版本。您还可以配置环境变量以选择在安装过程中如何配置资源,并自定义其他安装选项。本节介绍如何从 Dockerfile 配置和构建 Amazon IoT Greengrass Docker 镜像。

下载 Dockerfile 包

你可以从以下网址下载 Amazon IoT Greengrass Dockerfile 软件包: GitHub

AWS Greengrass Docker 存储库

下载包后,将内容解提取到计算机上的 download-directory/aws-greengrass-docker-nucleus-version 文件夹。Dockerfile 使用的是旧版本的 Greengrass。您应该更新文件,以使用您需要的 Greengrass 版本。

指定 Amazon IoT Greengrass 核心软件版本

在 Dockerfile 中使用以下构建参数来指定要在 Doc Amazon IoT Greengrass ker 镜像中使用的 Amazon IoT Greengrass 核心软件的版本。默认情况下,Dockerfile 使用最新版本的 Amazon IoT Greengrass 核心软件。

GREENGRASS_RELEASE_VERSION

Amazon IoT Greengrass 核心软件的版本。默认情况下,Dockerfile 会下载 Greengrass Nucleus 的最新可用版本。将值设置为您要下载的 Nucleus 的版本。

设置环境变量

环境变量使您可以自定义 C Amazon IoT Greengrass ore 软件在 Docker 容器中的安装方式。您可以通过多种方式为 Amazon IoT Greengrass Docker 镜像设置环境变量。

  • 要使用相同的环境变量来创建多个映像,请直接在 Dockerfile 中设置环境变量。

  • 如果您使用 docker run 启动容器,请在命令中将环境变量作为参数进行传递,或者在环境变量文件中设置环境变量,然后将该文件作为参数进行传递。有关在 Docker 中设置环境变量的更多信息,请参阅 Docker 文档中的环境变量

  • 如果您使用 docker-compose up 启动容器,请在环境变量文件中设置环境变量,然后将该文件作为参数进行传递。有关在 Compose 中设置环境变量的更多信息,请参阅 Docker 文档

您可以为 Amazon IoT Greengrass Docker 镜像配置以下环境变量。

注意

不要修改 Dockerfile 中的 TINI_KILL_PROCESS_GROUP 变量。此变量允许转发SIGTERM给 PID 组 PIDs 中的所有人,这样 C Amazon IoT Greengrass ore 软件就可以在 Docker 容器停止时正确关闭。

GGC_ROOT_PATH

(可选)容器内用作 Amazon IoT Greengrass 核心软件根目录的文件夹的路径。

默认值:/greengrass/v2

PROVISION

(可选)确定 Amazon IoT Greengrass 核心是否提供 Amazon 资源。

默认值:false

AWS_REGION

(可选) Amazon IoT Greengrass Core 软件用于检索或创建所需 Amazon 资源的。 Amazon Web Services 区域

默认值:us-east-1

THING_NAME

(可选)您注册为该核心设备的设备名称。 Amazon IoT 如果你的名字中不存在带有这个名字的东西 Amazon Web Services 账户, Amazon IoT Greengrass Core 软件就会创建它。

您必须指定 PROVISION=true 才能应用此参数。

默认值:GreengrassV2IotThing_ 加一个随机 UUID。

THING_GROUP_NAME

(可选)在其中添加此核心设备 Amazon IoT 的事物组的名称。 Amazon IoT 如果部署以该事物组为目标,则该设备和该组中的其他核心设备在连接到时会收到该部署 Amazon IoT Greengrass。如果您中不存在具有此名称的事物组 Amazon Web Services 账户,则 Amazon IoT Greengrass Core 软件会创建它。

您必须指定 PROVISION=true 才能应用此参数。

TES_ROLE_NAME

(可选)用于获取允许 Greengrass 核心设备与服务交互的 Amazon 证书的 IAM 角色名称。 Amazon 如果您的角色中不存在具有此名称的角色 Amazon Web Services 账户,则 Amazon IoT Greengrass 核心软件会使用GreengrassV2TokenExchangeRoleAccess策略创建该角色。此角色无权访问您用于托管组件构件的 S3 存储桶。因此,在创建组件时,您必须为构件的 S3 存储桶和对象添加权限。有关更多信息,请参阅 授权核心设备与 Amazon 服务交互

默认值:GreengrassV2TokenExchangeRole

TES_ROLE_ALIAS_NAME

(可选)指向 IAM Amazon IoT 角色的角色别名的名称,该角色为 Greengrass 核心设备提供 Amazon 证书。如果您的中不存在具有此名称的角色别名 Amazon Web Services 账户,则 Amazon IoT Greengrass Core 软件会创建该别名并将其指向您指定的 IAM 角色。

默认值:GreengrassV2TokenExchangeRoleAlias

COMPONENT_DEFAULT_USER

(可选) Amazon IoT Greengrass 核心软件用于运行组件的系统用户和组的名称或 ID。指定用户和组,用冒号分隔。组是可选的。举例来说,可以指定 ggc_user:ggc_groupggc_user

  • 如果您以根用户身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和组,则默认为 ggc_user:ggc_group。如果 ggc_userggc_group 不存在,则软件将自行创建。

  • 如果您以非 root 用户身份运行,则 Amazon IoT Greengrass Core 软件将使用该用户来运行组件。

  • 如果您未指定组,则 Amazon IoT Greengrass Core 软件将使用系统用户的主组。

有关更多信息,请参阅 配置运行组件的用户

DEPLOY_DEV_TOOLS

定义是否在容器映像中下载和部署 Greengrass CLI 组件。您可以使用 Greengrass CLI 在本地开发和调试组件。

重要

我们建议您仅在开发环境中使用此组件,不要在生产环境中使用。此组件允许访问您在生产环境中通常不需要的信息和操作。遵循最低权限原则,将此组件仅部署到有需求的核心设备。

默认值:false

INIT_CONFIG

(可选)用于安装 Amazon IoT Greengrass 核心软件的配置文件的路径。例如,您可以使用此选项来设置具有特定内核配置的新 Greengrass 核心设备,或者指定手动预置的资源。您必须将配置文件装载到此参数中指定的路径。

TRUSTED_PLUGIN

此功能适用于 Greengrass Nucleus 组件的 v2.4.0 及更高版本。

(可选)要作为可信插件加载的 JAR 文件的路径。使用此选项可提供预置插件 JAR 文件,例如使用队列预置自定义预置进行安装。

THING_POLICY_NAME

此功能适用于 Greengrass Nucleus 组件的 v2.4.0 及更高版本。

(可选)要附加到该核心设备 Amazon IoT 的事物证书的 Amazon IoT 策略名称。如果您的 Core 软件中不存在带有此名称的 Amazon IoT 策略,则 Amazon Web Services 账户 该策略将由 Amazon IoT Greengrass 核心软件创建。

您必须指定 PROVISION=true 才能应用此参数。

注意

默认情况下, Amazon IoT Greengrass Core 软件会创建宽松 Amazon IoT 策略。您可以缩小此策略的范围,也可以创建自定义策略来限制使用案例的权限。有关更多信息,请参阅 Amazon IoT Greengrass V2 核心设备的最低 Amazon IoT 政策

指定要安装的依赖关系

Amazon IoT Greengrass Dockerfile 中的 RUN 指令为运行 Amazon IoT Greengrass 核心软件安装程序做好了容器环境的准备。在 Amazon IoT Greengrass Core 软件安装程序在 Docker 容器中运行之前,您可以自定义安装的依赖关系。

构建 Amazon IoT Greengrass 镜像

使用 Amazon IoT Greengrass Dockerfile 来构建 Amazon IoT Greengrass 容器镜像。您可以使用 Docker CLI 或 Docker Compose CLI 来构建映像并启动容器。您还可以使用 Docker CLI 来构建映像,然后使用 Docker Compose 从该映像启动您的容器。

Docker
  1. 在主机上,运行以下命令以切换到包含已配置 Dockerfile 的目录。

    cd download-directory/aws-greengrass-docker-nucleus-version
  2. 运行以下命令从 Dockerfile 构建 Amazon IoT Greengrass 容器镜像。

    sudo docker build -t "platform/aws-iot-greengrass:nucleus-version" ./
Docker Compose
  1. 在主机上,运行以下命令以切换到包含 Dockerfile 和 Compose 文件的目录。

    cd download-directory/aws-greengrass-docker-nucleus-version
  2. 运行以下命令以使用 Compose 文件构建 Amazon IoT Greengrass 容器镜像。

    docker-compose -f docker-compose.yml build

您已成功创建 Amazon IoT Greengrass 容器镜像。Docker 镜像安装了 Amazon IoT Greengrass 核心软件。现在,您可以在 Docker 容器中运行 Amazon IoT Greengrass 核心软件。