本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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 AWS IoT Greengrass 容器中偵錯
為了對 Docker 容器的問題進行偵錯,您可以保留 Greengrass 執行時間日誌或將互動式 shell 連接到 Docker 容器。
在 Docker 容器外保留 Greengrass 日誌
停止 AWS IoT Greengrass 容器之後,您可以使用下列docker cp 命令,將 Docker 容器的 Greengrass 日誌複製到暫時日誌目錄。
docker cpcontainer-id:/greengrass/v2/logs/tmp/logs
若要即使在容器結束或移除之後仍保留日誌,您必須在繫結掛載目錄之後執行 AWS IoT Greengrass Docker 容器。/logs/greengrass/v2
若要繫結掛載目錄,請在執行新的 Docker AWS IoT Greengrass 容器時執行下列其中一項操作。/logs/greengrass/v2
-
將 包含在
docker run命令-v中。/tmp/logs:/logs:ro/greengrass/v2在執行
docker-compose up命令之前,修改 Compose 檔案中的volumes區塊,以包含以下行。volumes: -/tmp/logs:/logs:ro/greengrass/v2
然後,您可以在主機上檢查日誌,在 AWS IoT Greengrass Docker 容器內執行時查看 Greengrass 日誌。/tmp/logs
如需有關執行 Greengrass Docker 容器的資訊,請參閱 使用手動佈建在 Docker AWS IoT Greengrass 中執行 和 使用自動佈建在 Docker AWS IoT Greengrass 中執行
將互動式 shell 連接至 Docker 容器
當您使用 在 Docker 容器內docker exec執行命令時,這些命令不會擷取在 Docker 日誌中。在 Docker 日誌中記錄命令可協助您調查 Greengrass Docker 容器的狀態。執行以下任意一項:
-
在個別終端機中執行下列命令,將終端機的標準輸入、輸出和錯誤連接至執行中的容器。這可讓您從目前的終端機檢視和控制 Docker 容器。
docker attachcontainer-id -
在個別終端機中執行下列命令。這可讓您以互動式模式執行命令,即使未連接容器也一樣。
docker exec -itcontainer-idsh -c "command> /proc/1/fd/1"
如需一般 AWS IoT Greengrass 故障診斷,請參閱 故障診斷 AWS IoT Greengrass V2。