

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Docker 應用程式管理員
<a name="docker-application-manager-component"></a>

Docker 應用程式管理員元件 (`aws.greengrass.DockerApplicationManager`) 可讓 從 Amazon Elastic Container Registry (Amazon ECR) 上託管的公 AWS IoT Greengrass 有映像登錄檔和私有登錄檔下載 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)
+ [Configuration](#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 核](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>[Docker 引擎](https://docs.docker.com/engine/) 1.9.1 或更新版本安裝在 Greengrass 核心裝置上。20.10 版是經過驗證可與 AWS IoT Greengrass Core 軟體搭配使用的最新版本。您必須先直接在核心裝置上安裝 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"
      }
    ]
  }
  ```

------

  ```
  ```
+ 支援在 VPC 中執行 docker 應用程式管理員元件。若要在 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)。


| Endpoint | 站點 | 必要 | Description | 
| --- | --- | --- | --- | 
|  `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 核](greengrass-nucleus-component.md) | >=2.1.0 <2.17.0 | 軟式 | 

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

下表列出此元件 2.0.14 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.16.0 | 軟式 | 

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

下表列出此元件 2.0.13 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.15.0 | 軟式 | 

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

下表列出此元件 2.0.12 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.14.0 | 軟式 | 

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

下表列出此元件 2.0.11 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.13.0 | 軟式 | 

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

下表列出此元件 2.0.10 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.12.0 | 軟式 | 

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

下表列出此元件 2.0.9 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.11.0 | 軟式 | 

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

下表列出此元件 2.0.8 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.10.0 | 軟式 | 

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

下表列出此元件 2.0.7 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.9.0 | 軟式 | 

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

下表列出此元件 2.0.6 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.8.0 | 軟式 | 

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

下表列出此元件 2.0.5 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.7.0 | 軟式 | 

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

下表列出此元件 2.0.4 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.6.0 | 軟式 | 

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

下表列出此元件 2.0.3 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.5.0 | 軟式 | 

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

下表列出此元件 2.0.2 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.4.0 | 軟式 | 

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

下表列出此元件 2.0.1 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.3.0 | 軟式 | 

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

下表列出此元件 2.0.0 版的相依性。


| 相依性 | 相容版本 | 相依性類型 | 
| --- | --- | --- | 
| [Greengrass 核](greengrass-nucleus-component.md) | >=2.1.0 <2.2.0 | 軟式 | 

------

如需元件相依性的詳細資訊，請參閱[元件配方參考](component-recipe-reference.md#recipe-reference-component-dependencies)。

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

此元件沒有任何組態參數。

## 本機日誌檔案
<a name="docker-application-manager-component-log-file"></a>

此元件使用與 [Greengrass 核](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) 