从 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 版本。

设置环境变量

环境变量使您可以自定义 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 组中的所有 PID,以便在 Docker 容器停止时Amazon IoT Greengrass核心软件可以正确关闭。

GGC_ROOT_PATH

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

默认值:/greengrass/v2

PROVISION

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

默认值:false

AWS_REGION

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

默认值:us-east-1

THING_NAME

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

必须指定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

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

默认值:GreengrassV2TokenExchangeRoleAlias

COMPONENT_DEFAULT_USER

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

  • 如果您以 root 身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和群组,则默认为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策略名称。如果您的 C Amazon IoT Greengrass ore 软件中不存在带有此名称的Amazon IoT策略,则会创建Amazon Web Services 账户该策略。

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

注意

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

指定要安装的依赖关系

Amazon IoT GreengrassDockerfile 中的 RUN 指令为运行Amazon IoT Greengrass核心软件安装程序做好了容器环境的准备。您可以自定义在 C Amazon IoT Greengrass ore 软件安装程序在 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核心软件。