

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 選用：設定 IDT for 的 Docker 容器 AWS IoT Greengrass
<a name="docker-config-setup"></a>

AWS IoT Greengrass 提供 Docker 映像和 Dockerfile，可讓您更輕鬆地在 Docker 容器中執行 AWS IoT Greengrass Core 軟體。設定 AWS IoT Greengrass 容器之後，您可以執行 IDT 測試。目前，僅支援 x86\_64 Docker 架構來執行 IDT for AWS IoT Greengrass。

此功能需要 IDT v2.3.0 或更新版本。

設定 Docker 容器以執行 IDT 測試的程序取決於您使用的是 提供的 Docker 映像或 Dockerfile AWS IoT Greengrass。
+ [使用 Docker 映像](#docker-config-setup-docker-image)。Docker 映像已安裝 AWS IoT Greengrass Core 軟體和相依性。
+ [使用 Dockerfile](#docker-config-setup-dockerfile)。Dockerfile 包含可用來建置自訂 AWS IoT Greengrass 容器映像的原始碼。您可以修改映像，以在不同平台架構上執行或減少映像大小。
**注意**  
AWS IoT Greengrass 不提供 AWS IoT Greengrass 核心軟體版本 1.11.1 的 Dockerfiles 或 Docker 映像。若要在您自己的自訂容器映像上執行 IDT 測試，映像必須包含 提供的 Dockerfile 中定義的相依性 AWS IoT Greengrass。

當您 AWS IoT Greengrass 在 Docker 容器中執行 時，無法使用下列功能：<a name="docker-image-unsupported-features"></a>
+ 在 **Greengrass 容器**模式下執行[的連接器](connectors.md)。若要在 Docker 容器中執行連接器，連接器必須以 **No container (無容器)** 模式執行。若要尋找支援 **No container (無容器)** 模式的連接器，請參閱 [AWS提供的 Greengrass 連接器](connectors-list.md)。其中一些連接器具有隔離模式參數，您必須設定為 **No container (無容器)**。
+ [本機裝置和磁碟區資源](access-local-resources.md)。在 Docker 容器中執行的使用者定義 Lambda 函數必須直接存取核心上的裝置和磁碟區。

## 設定 提供的 Docker 映像 AWS IoT Greengrass
<a name="docker-config-setup-docker-image"></a>

請依照下列步驟設定 AWS IoT Greengrass Docker 映像以執行 IDT 測試。

**先決條件**

開始本教學課程之前，您必須執行下列動作。<a name="docker-image-prereq-list"></a>
+ 您必須根據您選擇的 AWS Command Line Interface (AWS CLI) 版本，在主機電腦上安裝下列軟體和版本。

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/) 18.09 版或更新版本。舊版也可以運作，但我們建議使用 18.09 或更新版本。
  + AWS CLI 2.0.0 版或更新版本。
    + 若要安裝第 2 AWS CLI 版，請參閱[安裝第 2 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。
    + 若要設定 AWS CLI，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
**注意**  
若要在 Windows 電腦上升級至更新 AWS CLI 版本 2，您必須重複 [MSI 安裝](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html)程序。

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/) 18.09 版或更新版本。舊版也可以運作，但我們建議使用 18.09 或更新版本。
  + [Python](https://www.python.org/downloads/) 3.6 版或更新版本。
  + [pip](https://pip.pypa.io/en/stable/installing) 版本 18.1 或更新版本。
  + AWS CLI 1.17.10 版或更新版本
    + 若要安裝第 1 AWS CLI 版，請參閱[安裝第 1 AWS CLI 版](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)。
    + 若要設定 AWS CLI，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
    + 若要升級至最新版本的 第 1 AWS CLI 版，請執行下列命令。

      ```
      pip install awscli --upgrade --user
      ```
**注意**  
如果您在 Windows 上使用 AWS CLI 版本 1 的 [MSI 安裝](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows)，請注意下列事項：  
如果第 1 AWS CLI 版安裝無法安裝 botocore，請嘗試使用 [Python 和 pip 安裝](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-pip)。
若要升級至更新 AWS CLI 版本 1，您必須重複 MSI 安裝程序。

------
+ 若要存取 Amazon Elastic Container Registry (Amazon ECR) 資源，您必須授予下列許可。
  + Amazon ECR 要求使用者透過 AWS Identity and Access Management (IAM) 政策授予`ecr:GetAuthorizationToken`許可，才能向登錄檔進行身分驗證，並從 Amazon ECR 儲存庫推送或提取映像。如需詳細資訊，請參閱《[Amazon Elastic Container Registry 使用者指南》中的 Amazon ECR 儲存庫政策範例](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html)*和*[存取一個 Amazon ECR 儲存庫](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket)。

 

1. 下載 Docker 映像並設定容器。您可以從 [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) 或 [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) (Amazon ECR) 下載預先建置的映像，並在 Windows、macOS 和 Linux (x86\_64) 平台上執行。

   若要從 Amazon ECR 下載 Docker 映像，請完成 中的所有步驟[步驟 1：從 Amazon ECR 取得 AWS IoT Greengrass 容器映像](run-gg-in-docker-container.md#docker-pull-image)。然後，返回此主題以繼續進行設定。

1. <a name="docker-linux-non-root"></a>僅限 Linux 使用者：確定執行 IDT 的使用者具備執行 Docker 命令的許可。如需詳細資訊，請參閱 Docker 文件中的[以非根使用者身分管理 Docker](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user)。

1. <a name="docker-run-gg-container"></a>若要執行 AWS IoT Greengrass 容器，請針對您的作業系統使用 命令：

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v {{<host-path-to-kernel-config-file>}}:{{<container-path>}} \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將 {{<host-path-to-kernel-config-file>}} 替換為主機上核心組態檔案的路徑，並將 {{<container-path>}} 替換為容器中裝載磁碟區的路徑。

     主機上的核心組態圖通常位於 `/proc/config.gz` 或 `/boot/config-{{<kernel-release-date>}}`。您可以執行 `uname -r` 以尋找 {{<kernel-release-date>}} 值。

     **範例：**若要從 `/boot/config-{{<kernel-release-date>}}` 裝載組態檔

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **範例：**若要從 `proc/config.gz` 裝載組態檔

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 Docker AWS IoT Greengrass 映像的清單，請執行下列命令。

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
#### [ macOS ]

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 AWS IoT Greengrass Docker 映像的清單，請執行下列命令：

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 AWS IoT Greengrass Docker 映像的清單，請執行下列命令：

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**重要**  
使用 IDT 進行測試時，請勿包含用來執行映像以供一般 AWS IoT Greengrass 使用的`--entrypoint /greengrass-entrypoint.sh \`引數。

1. <a name="docker-config-next-steps"></a>下一步：[設定您的 AWS 登入資料和`device.json`檔案](set-config.md)。

## 設定 提供的 dockerfile AWS IoT Greengrass
<a name="docker-config-setup-dockerfile"></a>

請依照下列步驟，設定從 Dockerfile 建置的 Docker AWS IoT Greengrass 映像來執行 IDT 測試。

1. 從 [AWS IoT Greengrass Docker 軟體](what-is-gg.md#gg-docker-download) 中，將 Dockerfile 套件下載到您的主機電腦，並將其解壓縮。

1. 打開 `README.md`。接下來的三個步驟，請參閱此檔案中的章節。

1. 請確定您符合**先決條件**一節中的需求。

1. 僅限 Linux 使用者：完成**啟用 Symlink 和 Hardlink 保護**和**啟用 IPv4 網路轉送**步驟。

1. 若要建置 Docker 映像，請完成**步驟 1 中的所有步驟。建置 AWS IoT Greengrass Docker 映像**。然後，返回此主題以繼續進行設定。

1. <a name="docker-run-gg-container"></a>若要執行 AWS IoT Greengrass 容器，請針對您的作業系統使用 命令：

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v {{<host-path-to-kernel-config-file>}}:{{<container-path>}} \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將 {{<host-path-to-kernel-config-file>}} 替換為主機上核心組態檔案的路徑，並將 {{<container-path>}} 替換為容器中裝載磁碟區的路徑。

     主機上的核心組態圖通常位於 `/proc/config.gz` 或 `/boot/config-{{<kernel-release-date>}}`。您可以執行 `uname -r` 以尋找 {{<kernel-release-date>}} 值。

     **範例：**若要從 `/boot/config-{{<kernel-release-date>}}` 裝載組態檔

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **範例：**若要從 `proc/config.gz` 裝載組態檔

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 Docker AWS IoT Greengrass 映像的清單，請執行下列命令。

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
#### [ macOS ]

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 AWS IoT Greengrass Docker 映像的清單，請執行下列命令：

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   {{<image-repository>}}:{{<tag>}}
   ```
   + 將命令中的 {{<image-repository>}}:{{<tag>}} 替換為儲存庫的名稱和目標映像的標籤。

     **範例：**指向最新版本的 AWS IoT Greengrass Core 軟體

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

     若要取得 AWS IoT Greengrass Docker 映像的清單，請執行下列命令：

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**重要**  
使用 IDT 進行測試時，請勿包含用來執行映像以供一般 AWS IoT Greengrass 使用的`--entrypoint /greengrass-entrypoint.sh \`引數。

1. <a name="docker-config-next-steps"></a>下一步：[設定您的 AWS 登入資料和`device.json`檔案](set-config.md)。

## 針對 IDT for 的 Docker 容器設定進行故障診斷 AWS IoT Greengrass
<a name="docker-config-setup-troubleshooting"></a>

使用以下資訊來協助疑難排解執行 Docker 容器進行 IDT AWS IoT Greengrass 測試的問題。

### 警告：載入 config file:/home/user/.docker/config.json - stat /home/<user>/.docker/config.json 時發生錯誤：權限遭拒
<a name="docker-config-permissions-linux"></a>

如果在 Linux 上執行 `docker` 命令時發生錯誤，請執行下列命令。使用執行 IDT 的使用者取代下列命令中的 {{<user>}}。

```
sudo chown {{<user>}}:{{<user>}} /home/{{<user>}}/.docker -R
sudo chmod g+rwx /home/{{<user>}}/.docker -R
```