

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

# Docker 应用程序管理器
<a name="docker-application-manager-component"></a>

Docker 应用程序管理器组件 (`aws.greengrass.DockerApplicationManager`) 允许 AWS IoT Greengrass 从托管在亚马逊 Elastic Container Registry (Amazon ECR) 上的公共映像注册表和私有注册表下载 Docker 镜像。它还允许自动管理证书 AWS IoT Greengrass ，以便安全地从 Amazon ECR 中的私有存储库下载图像。

开发运行 Docker 容器的自定义组件时，请将 Docker 应用程序管理器作为依赖关系包含在组件中，用于下载指定为构件的 Docker 映像。有关更多信息，请参阅 [运行 Docker 容器](run-docker-container.md)。

**Topics**
+ [版本](#docker-application-manager-component-versions)
+ [Type](#docker-application-manager-component-type)
+ [操作系统](#docker-application-manager-component-os-support)
+ [要求](#docker-application-manager-component-requirements)
+ [依赖项](#docker-application-manager-component-dependencies)
+ [配置](#docker-application-manager-component-configuration)
+ [本地日志文件](#docker-application-manager-component-log-file)
+ [更改日志](#docker-application-manager-component-changelog)
+ [另请参阅](#docker-application-manager-component-see-also)

## 版本
<a name="docker-application-manager-component-versions"></a>

此组件具有以下版本：
+ 2.0.x

## Type
<a name="docker-application-manager-component-type"></a>

<a name="public-component-type-generic"></a>此<a name="public-component-type-generic-phrase"></a>组件是一个通用组件 (`aws.greengrass.generic`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 运行组件的生命周期脚本。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅[组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="docker-application-manager-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="docker-application-manager-component-requirements"></a>

此组件具有以下要求：
+ <a name="docker-engine-requirement"></a>Greengrass 核心设备上安装的 [Docker Engine](https://docs.docker.com/engine/) 1.9.1 或更高版本。版本 20.10 是经验证可与 AWS IoT Greengrass 核心软件配合使用的最新版本。在部署运行 Docker 容器的组件之前，必须直接在核心设备上安装 Docker。
+ <a name="docker-daemon-requirement"></a>在部署此组件之前，Docker 进程守护程序已启动并在核心设备上运行。
+ 存储在以下支持的映像源之一中的 Docker 映像：
  + Amazon Elastic Container Registry（Amazon ECR）中的公共和私有映像存储库
  + 公共 Docker Hub 存储库
  + 公共 Docker 可信注册表
+ Docker 映像作为构件包含在您的自定义 Docker 容器组件中。使用以下 URI 格式来指定您的 Docker 映像：<a name="docker-image-artifact-uri"></a>
  + Amazon ECR 私有映像：`docker:account-id.dkr.ecr.region.amazonaws.com/repository/image[:tag|@digest]`
  + Amazon ECR 公共映像：`docker:public.ecr.aws/repository/image[:tag|@digest]`
  + Docker Hub 公共映像：`docker:name[:tag|@digest]`

  有关更多信息，请参阅 [运行 Docker 容器](run-docker-container.md)。
**注意**  
如果您没有在映像的构件 URI 中指定映像标签或映像摘要，则在部署自定义 Docker 容器组件时，Docker 应用程序管理器会拉取该映像的最新可用版本。为确保所有核心设备都运行相同版本的映像，我们建议您在构件 URI 中包含映像标签或摘要。
+ <a name="docker-user-permissions-requirement"></a>运行 Docker 容器组件的系统用户必须具有根或管理员权限，或者您必须将 Docker 配置为以非根用户或非管理员用户身份运行。
  + 在 Linux 设备上，您可向 `docker` 组中添加一个用户以调用 `docker` 命令，无需 `sudo`。
  + 在 Windows 设备上，您可将用户添加到 `docker-users` 组中以调用 `docker` 命令，无需管理员权限。

------
#### [ Linux or Unix ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker` 组中，请运行以下命令：

  ```
  sudo usermod -aG docker ggc_user
  ```

  有关更多信息，请参阅[以非根用户身份管理 Docker](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)。

------
#### [ Windows Command Prompt (CMD) ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker-users` 组中，请以管理员身份运行以下命令：

  ```
  net localgroup docker-users ggc_user /add
  ```

------
#### [ Windows PowerShell ]

  要添加 `ggc_user` 或您用于运行 Docker 容器组件的非根用户至 `docker-users` 组中，请以管理员身份运行以下命令：

  ```
  Add-LocalGroupMember -Group docker-users -Member ggc_user
  ```

------
+ <a name="docker-proxy-requirement"></a>如果您[将 AWS IoT Greengrass Core 软件配置为使用网络代理](configure-greengrass-core-v2.md#configure-alpn-network-proxy)，则必须[将 Docker 配置为使用相同的代理服务器](https://docs.docker.com/network/proxy/)。
+ 如果您的 Docker 映像存储在 Amazon ECR 私有注册表中，则必须将令牌交换服务组件作为依赖关系包含在 Docker 容器组件中。此外，[Greengrass 设备角色](device-service-role.md)必须允许执行 `ecr:GetAuthorizationToken`、`ecr:BatchGetImage` 和 `ecr:GetDownloadUrlForLayer` 操作，如以下示例 IAM 策略中所示。

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Action": [
          "ecr:GetAuthorizationToken",
          "ecr:BatchGetImage",
          "ecr:GetDownloadUrlForLayer"
        ],
        "Resource": [
          "*"
        ],
        "Effect": "Allow"
      }
    ]
  }
  ```

------

  ```
  ```
+ 支持 Docker 应用程序管理器组件在 VPC 中运行。要在 VPC 中部署此组件，需要满足以下条件。
  + Docker 应用管理器组件必须具备下载映像的连接功能。例如，如果您使用 ECR，则必须连接至以下端点。
    + `*.dkr.ecr.region.amazonaws.com`（VPC 端点 `com.amazonaws.region.ecr.dkr`）
    + `api.ecr.region.amazonaws.com`（VPC 端点 `com.amazonaws.region.ecr.api`）

### 端点和端口
<a name="docker-application-manager-component-endpoints"></a>

除基本操作所需的端点和端口外，此组件还必须能够对以下端点和端口执行出站请求。有关更多信息，请参阅 [允许设备流量通过代理或防火墙](allow-device-traffic.md)。


| 端点 | 端口 | 必需 | 说明 | 
| --- | --- | --- | --- | 
|  `ecr.region.amazonaws.com`  | 443 | 否 |  如果您从 Amazon ECR 下载 Docker 映像，则此为必填项。  | 
|  `hub.docker.com` `registry.hub.docker.com/v1`  | 443 | 否 |  如果您从 Docker Hub 下载 Docker 映像，则此为必填项。  | 

## 依赖项
<a name="docker-application-manager-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#docker-application-manager-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.0.15 ]

下表列出了此组件版本 2.0.15 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.17.0 | 软性 | 

------
#### [ 2.0.14 ]

下表列出了此组件版本 2.0.14 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.16.0 | 软性 | 

------
#### [ 2.0.13 ]

下表列出了此组件版本 2.0.13 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.15.0 | 软性 | 

------
#### [ 2.0.12 ]

下表列出了此组件的版本 2.0.12 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.14.0 | 软性 | 

------
#### [ 2.0.11 ]

下表列出了此组件的版本 2.0.11 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.13.0 | 软性 | 

------
#### [ 2.0.10 ]

下表列出了此组件的版本 2.0.10 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.12.0 | 软性 | 

------
#### [ 2.0.9 ]

下表列出了此组件的版本 2.0.9 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.11.0 | 软性 | 

------
#### [ 2.0.8 ]

下表列出了此组件的版本 2.0.8 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.10.0 | 软性 | 

------
#### [ 2.0.7 ]

下表列出了此组件的版本 2.0.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.9.0 | 软性 | 

------
#### [ 2.0.6 ]

下表列出了此组件的版本 2.0.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.8.0 | 软性 | 

------
#### [ 2.0.5 ]

下表列出了此组件的版本 2.0.5 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.7.0 | 软性 | 

------
#### [ 2.0.4 ]

下表列出了此组件的版本 2.0.4 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.6.0 | 软性 | 

------
#### [ 2.0.3 ]

下表列出了此组件的版本 2.0.3 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.5.0 | 软性 | 

------
#### [ 2.0.2 ]

下表列出了此组件的版本 2.0.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.4.0 | 软性 | 

------
#### [ 2.0.1 ]

下表列出了此组件的版本 2.0.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.3.0 | 软性 | 

------
#### [ 2.0.0 ]

下表列出了此组件版本 2.0.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [Greengrass Nucleus](greengrass-nucleus-component.md) | >=2.1.0 <2.2.0 | 软性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="docker-application-manager-component-configuration"></a>

此组件没有任何配置参数。

## 本地日志文件
<a name="docker-application-manager-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="docker-application-manager-component-changelog"></a>

下表介绍每个组件版本的更改。


|   **版本**   |   **更改**   | 
| --- | --- | 
|  2.0.15  |  Greengrass nucleus 版本 2.16.0 版本的版本已更新。  | 
|  2.0.14  | Greengrass nucleus 版本 2.15.0 版本的版本已更新。 | 
|  2.0.13  | Greengrass nucleus 版本 2.14.0 版本的版本已更新。 | 
|  2.0.12  | 对 Greengrass Nucleus 版本 2.13.0 发行版进行了版本更新。 | 
|  2.0.11  | 版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。 | 
|  2.0.10  | 版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。 | 
|  2.0.9  | 版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。 | 
|  2.0.8  | 对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。 | 
|  2.0.7  | 版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。 | 
|  2.0.6  |  版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。  | 
|  2.0.5  |  版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。  | 
|  2.0.4  |  版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。  | 
|  2.0.3  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.2  |  版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。  | 
|  2.0.1  |  对 Greengrass Nucleus 版本 2.2.0 发行版进行了版本更新。  | 
|  2.0.0  |  初始版本。  | 

## 另请参阅
<a name="docker-application-manager-component-see-also"></a>
+  [运行 Docker 容器](run-docker-container.md) 