本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 Docker 容器中的 Amazon IoT Greengrass 执行问题排查
使用以下信息来帮助您解决在 Docker 容器Amazon IoT Greengrass中运行的问题,并调试 Docker 容器Amazon IoT Greengrass中的问题。
对运行 Docker 容器时出现的问题进行故障排除
使用以下信息可帮助解决与在 Docker 容器中运行 Amazon IoT Greengrass 相关的问题。
主题
错误:无法从非 TTY 设备执行交互式登录
当您运行aws ecr get-login-password
命令时,可能会出现此错误。确保您已安装最新的 Amazon CLI 版本 2 或版本 1。建议您使用 Amazon CLI 版本 2。有关更多信息,请参阅Amazon Command Line Interface《用户指南》中的安装 Amazon CLI。
错误:未知选项:-no-include-email
当您运行aws ecr get-login
命令时,可能会出现此错误。确保您已安装最新的 Amazon CLI 版本(例如,运行:pip install awscli
--upgrade --user
)。有关更多信息,请参阅Amazon Command Line Interface用户指南中的在 Microsoft Windows 上安装 Amazon Command Line Interface。
错误:防火墙阻止 Windows 和容器之间的文件共享。
在 Windows 计算机上运行 Docker 时,你可能会收到此错误或一条Firewall Detected
消息。如果您登录虚拟私有网络 (VPN) 并且网络设置阻止挂载共享驱动器,也会出现此错误。在这种情况下,请关闭 VPN 并重新运行 Docker 容器。
错误:调用 GetAuthorizationToken 操作时出现错误 (AccessDeniedException):用户:arn: aws: iam:: ac count-id: user/
<user-name>无权在资源上执行:ecr:* GetAuthorizationToken
如果您没有足够权限来访问 Amazon ECR 存储库,则运行 aws ecr get-login-password
命令时可能会收到此错误。有关更多信息,请参阅Amazon ECR 用户指南中的 Amazon ECR 存储库策略示例和访问 One Amazon ECR 存储库。
错误:您已达到拉取速率上限
Docker Hub 限制了匿名用户和 Free Docker Hub 用户可以发出的拉取请求的数量。如果您超过匿名或免费用户拉取请求的速率限制,则会收到以下错误之一:
-
ERROR: toomanyrequests: Too Many Requests.
-
You have reached your pull rate limit.
要解决这些错误,您可以等待几个小时再尝试另一个拉取请求。如果您计划持续提交大量拉取请求,请访问 Docker Hub 网站
在 Docker 容器中调试 Amazon IoT Greengrass
要调试 Docker 容器的问题,您可以保留 Greengrass 运行时日志或将交互式 shell 附加到 Docker 容器。
在 Docker 容器之外保存 Greengrass 日志
停止Amazon IoT Greengrass容器后,您可以使用以下docker cp
命令将 Greengrass 日志从 Docker 容器复制到临时日志目录。
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
要在容器退出或移除后仍保留日志,您必须在绑定挂载目录后运行 Amazon IoT Greengrass Docker 容器。
/logs/greengrass/v2
要绑定挂载
目录,请在运行新的 D Amazon IoT Greengrass ocker 容器时执行以下任一操作。
/logs/greengrass/v2
-
包含
-v
在你的/tmp/logs
:
/logs:ro/greengrass/v2
docker run
命令中。在运行
docker-compose up
命令之前,修改 Compose 文件中的volumes
块以包含以下行。volumes: -
/tmp/logs
:
/logs:ro/greengrass/v2
然后,当在 Docker 容器内运行时,你可以在主机
上查看日志,查看 Greengrass 日志Amazon IoT Greengrass。/tmp/logs
有关运行 Greengrass Docker 容器的信息,请参阅和 使用手动Amazon IoT Greengrass配置在 Docker 中运行 通过自动 Amazon IoT Greengrass 配置在 Docker 中运行
将交互式外壳附加到 Docker 容器
当你使用docker exec
在 Docker 容器内运行命令时,这些命令不会在 Docker 日志中捕获。在 Docker 日志中记录命令可以帮助你调查 Greengrass Docker 容器的状态。请执行以下操作之一:
-
在单独的终端中运行以下命令,将终端的标准输入、输出和错误附加到正在运行的容器。这使您能够从当前终端查看和控制 Docker 容器。
docker attach
container-id
-
在单独的终端中运行以下命令。这使您能够在交互模式下运行命令,即使未连接容器也是如此。
docker exec -it
container-id
sh -c "command
> /proc/1/fd/1"
有关一般Amazon IoT Greengrass故障排除,请参阅故障排除 Amazon IoT Greengrass V2。