本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 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
下载软件包后,将内容解压缩到计算机上的
文件夹。Dockerfile 使用的是旧版本的 Greengrass。你应该更新文件以使用你想要的 Greengrass 版本。download-directory/
aws-greengrass-docker-nucleus-version
指定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 镜像设置环境变量。
您可以为 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资源。
-
如果您指定
true
,Amazon IoT GreengrassCore 软件会将容器镜像注册为Amazon IoT事物,并配置 Greengrass 核心设备Amazon所需的资源。Amazon IoT Greengrass核心软件预置Amazon IoT事物、(可选)Amazon IoT事物组、IAM 角色和Amazon IoT角色别名。有关更多信息,请参阅 Amazon IoT Greengrass 在具有自动资源配置功能的 Docker 容器中运行。 -
如果您指定
false
,则必须创建一个配置文件以提供给 Amazon IoT Greengrass Core 安装程序,该文件指定使用您手动创建的Amazon资源和证书。有关更多信息,请参阅 Amazon IoT Greengrass在 Docker 容器中运行,手动配置资源。
默认值:
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_group
或ggc_user
。-
如果您以 root 身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和群组,则默认为
ggc_user:ggc_group
。如果存在ggc_user
或ggc_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 从该镜像启动你的容器。
您已成功创建Amazon IoT Greengrass容器镜像。Docker 镜像安装了Amazon IoT Greengrass核心软件。现在,您可以在 Docker 容器中运行Amazon IoT Greengrass核心软件。