在 Docker AWS IoT Greengrass 容器中進行故障診斷 - AWS IoT Greengrass

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

在 Docker AWS IoT Greengrass 容器中進行故障診斷

使用下列資訊來協助您對 AWS IoT Greengrass 在 Docker 容器中執行的 問題進行故障診斷,並對 AWS IoT Greengrass Docker 容器中的 問題進行偵錯。

對執行 Docker 容器的問題進行故障診斷

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

錯誤:無法從非 TTY 裝置執行互動式登入

當您執行 aws ecr get-login-password命令時,可能會發生此錯誤。請確定您已安裝最新版本 AWS CLI 2 或版本 1。我們建議您使用 第 2 AWS CLI 版。如需詳細資訊,請參閱「AWS Command Line Interface 使用者指南」中的安裝 AWS CLI

錯誤:不明選項:-no-include-email

當您執行 aws ecr get-login命令時,可能會發生此錯誤。請確定您已安裝 AWS CLI 最新版本 (例如,執行:pip install awscli --upgrade --user)。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的在 Microsoft Windows AWS Command Line Interface 上安裝

錯誤:防火牆封鎖了 Windows 和容器之間的檔案共用。

在 Windows 電腦上執行 Docker 時,您可能會收到此錯誤或Firewall Detected訊息。如果您登入虛擬私有網路 (VPN),而您的網路設定防止掛載共用磁碟機,也可能會發生這個錯誤。在這種情況下,請關閉 VPN 並重新執行 Docker 容器。

錯誤:呼叫 GetAuthorizationToken 操作時發生錯誤 (AccessDeniedException):使用者:arn:aws:iam::account-id:user/<user-name> 未獲授權在資源上執行:ecr:GetAuthorizationToken:*

如果您沒有足夠的許可來存取 Amazon ECR 儲存庫,則執行 aws ecr get-login-password命令時可能會收到此錯誤。如需詳細資訊,請參閱《Amazon ECR 使用者指南》中的 Amazon ECR 儲存庫政策範例和存取一個 Amazon ECR 儲存庫

錯誤:您已經達到提取率限制

Docker Hub 限制匿名和 Free Docker Hub 使用者可以提出的提取請求數量。如果您超過匿名或免費使用者提取請求的速率限制,則會收到下列其中一個錯誤:

ERROR: toomanyrequests: Too Many Requests.
You have reached your pull rate limit.

若要解決這些錯誤,您可以等待幾個小時,然後再嘗試另一個提取請求。如果您打算持續提交大量提取請求,請參閱 Docker Hub 網站,以取得速率限制的相關資訊,以及驗證和升級 Docker 帳戶的選項。

在 Docker AWS IoT Greengrass 容器中偵錯

為了對 Docker 容器的問題進行偵錯,您可以保留 Greengrass 執行時間日誌或將互動式 shell 連接到 Docker 容器。

在 Docker 容器外保留 Greengrass 日誌

停止 AWS IoT Greengrass 容器之後,您可以使用下列docker cp 命令,將 Docker 容器的 Greengrass 日誌複製到暫時日誌目錄。

docker cp container-id:/greengrass/v2/logs /tmp/logs

若要即使在容器結束或移除之後仍保留日誌,您必須在繫結掛載/greengrass/v2/logs目錄之後執行 AWS IoT Greengrass Docker 容器。

若要繫結掛載/greengrass/v2/logs目錄,請在執行新的 Docker AWS IoT Greengrass 容器時執行下列其中一項操作。

  • 將 包含在docker run命令-v /tmp/logs:/greengrass/v2/logs:ro中。

    在執行docker-compose up命令之前,修改 Compose 檔案中的 volumes 區塊,以包含以下行。

    volumes: - /tmp/logs:/greengrass/v2/logs:ro

然後,您可以在主機/tmp/logs上檢查日誌,在 AWS IoT Greengrass Docker 容器內執行時查看 Greengrass 日誌。

如需有關執行 Greengrass Docker 容器的資訊,請參閱 使用手動佈建在 Docker AWS IoT Greengrass 中執行使用自動佈建在 Docker AWS IoT Greengrass 中執行

將互動式 shell 連接至 Docker 容器

當您使用 在 Docker 容器內docker exec執行命令時,這些命令不會擷取在 Docker 日誌中。在 Docker 日誌中記錄命令可協助您調查 Greengrass Docker 容器的狀態。執行以下任意一項:

  • 在個別終端機中執行下列命令,將終端機的標準輸入、輸出和錯誤連接至執行中的容器。這可讓您從目前的終端機檢視和控制 Docker 容器。

    docker attach container-id
  • 在個別終端機中執行下列命令。這可讓您以互動式模式執行命令,即使未連接容器也一樣。

    docker exec -it container-id sh -c "command > /proc/1/fd/1"

如需一般 AWS IoT Greengrass 故障診斷,請參閱 故障診斷 AWS IoT Greengrass V2