本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Docker 容器中 AWS IoT Greengrass 的故障診斷
使用下列資訊來協助您疑難排解 AWS IoT Greengrass 在 Docker 容器中執行 的問題,以及偵錯 Docker 容器中使用 AWS IoT Greengrass 的問題。
對執行 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):User: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 cp
container-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 attach
container-id
-
在不同的終端機中執行下列命令。這可讓您在互動式模式下執行命令,即使容器未連接。
docker exec -it
container-id
sh -c "command
> /proc/1/fd/1"
如需一般 AWS IoT Greengrass 故障診斷,請參閱 故障診斷 AWS IoT Greengrass V2。