View a markdown version of this page

選用:設定 IDT for 的 Docker 容器 AWS IoT Greengrass - AWS IoT Greengrass

支援終止通知:2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後,您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊,請造訪從 遷移 AWS IoT Greengrass Version 1。

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

選用:設定 IDT for 的 Docker 容器 AWS IoT Greengrass

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 映像已安裝 AWS IoT Greengrass Core 軟體和相依性。

  • 使用 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 容器中執行 時,無法使用下列功能:

  • 在 Greengrass 容器模式下執行的連接器。若要在 Docker 容器中執行連接器,連接器必須以 No container (無容器) 模式執行。若要尋找支援 No container (無容器) 模式的連接器,請參閱 AWS提供的 Greengrass 連接器。其中一些連接器具有隔離模式參數,您必須設定為 No container (無容器)。

  • 本機裝置和磁碟區資源。在 Docker 容器中執行的使用者定義 Lambda 函數必須直接存取核心上的裝置和磁碟區。

設定 提供的 Docker 映像 AWS IoT Greengrass

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

先決條件

開始本教學課程之前,您必須執行下列動作。

  • 您必須根據您選擇的 AWS Command Line Interface (AWS CLI) 版本,在主機電腦上安裝下列軟體和版本。

    AWS CLI version 2
    • Docker 18.09 版或更新版本。舊版也可以運作,但我們建議使用 18.09 或更新版本。

    • AWS CLI 2.0.0 版或更新版本。

      注意

      若要在 Windows 電腦上升級至更新 AWS CLI 版本 2,您必須重複 MSI 安裝程序。

    AWS CLI version 1
    • Docker 18.09 版或更新版本。舊版也可以運作,但我們建議使用 18.09 或更新版本。

    • Python 3.6 版或更新版本。

    • pip 版本 18.1 或更新版本。

    • AWS CLI 1.17.10 版或更新版本

      • 若要安裝第 1 AWS CLI 版,請參閱安裝第 1 AWS CLI 版。

      • 若要設定 AWS CLI,請參閱設定 AWS CLI。

      • 若要升級至最新版本的 第 1 AWS CLI 版,請執行下列命令。

        pip install awscli --upgrade --user
      注意

      如果您在 Windows 上使用 AWS CLI 版本 1 的 MSI 安裝,請注意下列事項:

      • 如果第 1 AWS CLI 版安裝無法安裝 botocore,請嘗試使用 Python 和 pip 安裝。

      • 若要升級至更新 AWS CLI 版本 1,您必須重複 MSI 安裝程序。

  • 若要存取 Amazon Elastic Container Registry (Amazon ECR) 資源,您必須授予下列許可。

 

  1. 下載 Docker 映像並設定容器。您可以從 Docker Hub 或 Amazon Elastic Container Registry (Amazon ECR) 下載預先建置的映像,並在 Windows、macOS 和 Linux (x86_64) 平台上執行。

    若要從 Amazon ECR 下載 Docker 映像,請完成 中的所有步驟步驟 1:從 Amazon ECR 取得 AWS IoT Greengrass 容器映像。然後,返回此主題以繼續進行設定。

  2. 僅限 Linux 使用者:確定執行 IDT 的使用者具備執行 Docker 命令的許可。如需詳細資訊,請參閱 Docker 文件中的以非根使用者身分管理 Docker。

  3. 若要執行 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 \引數。

  4. 下一步:設定您的 AWS 登入資料和device.json檔案。

設定 提供的 dockerfile AWS IoT Greengrass

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

  1. 從 AWS IoT Greengrass Docker 軟體 中,將 Dockerfile 套件下載到您的主機電腦,並將其解壓縮。

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

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

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

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

  6. 若要執行 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 \引數。

  7. 下一步:設定您的 AWS 登入資料和device.json檔案。

針對 IDT for 的 Docker 容器設定進行故障診斷 AWS IoT Greengrass

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

警告:載入 config file:/home/user/.docker/config.json - stat /home/<user>/.docker/config.json 時發生錯誤:權限遭拒

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

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