对 Docker 容器中的 Amazon IoT Greengrass 执行问题排查 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 Docker 容器中的 Amazon IoT Greengrass 执行问题排查

使用以下信息可帮助您解决与运行相关的问题:Amazon IoT Greengrass在 Docker 容器中并调试与相关的问题Amazon IoT Greengrass在 Docker 容器中。

排查运行 Docker 容器的问题

使用以下信息可帮助解决与在 Docker 容器中运行 Amazon IoT Greengrass 相关的问题。

Error: 无法从非 TTY 设备执行交互式登录

在运行aws ecr get-login-password命令。确保您已安装最新的Amazon CLI版本 2 或版本 1。建议使用Amazon CLI版本 2。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的安装 Amazon CLI

Error: 未知选项:-不包含电子邮件

在运行aws ecr get-login命令。确保您拥有最新的Amazon CLI安装的版本(例如,运行:pip install awscli --upgrade --user)。 有关更多信息,请参阅 。安装Amazon Command Line Interface在 Microsoft Windows 上中的Amazon Command Line Interface用户指南.

Error: 防火墙阻止 Windows 和容器之间的文件共享。

你可能会收到此错误或Firewall Detected在 Windows 计算机上运行 Docker 时发送消息。如果您登录虚拟私有网络 (VPN) 并且网络设置阻止挂载共享驱动器,也会出现此错误。在这种情况下,请关闭 VPN 并重新运行 Docker 容器。

Error: An error (AccessDeniedException)) GetAuthorizationToken 操作:用户:arn: aws: iam።account-id: user/ <user-name>无权在资源上执行:ECR: GetAuthorenGenGenGenGate: *

在运行aws ecr get-login-password命令如果您没有足够的权限访问 Amazon ECR 存储库。有关更多信息,请参阅 。Amazon ECR 存储库策略示例访问一个 Amazon ECR 存储库中的Amazon ECR 用户指南.

Error: 你已经达到拉率限制

Docker Hub 限制匿名和免费 Docker Hub 用户可以发出的拉取请求的数量。如果超过匿名或免费用户拉取请求的速率限制,则将收到以下错误之一:

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

要解决这些错误,您可以等待几个小时才能尝试另一个拉取请求。如果您计划持续提交大量拉取请求,请参阅Docker Hub 网站了解有关速率限制以及验证和升级 Docker 帐户的选项的信息。

在 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 容器/greengrass/v2/logs目录。

要绑定挂载/greengrass/v2/logs在运行新的目录时,请执行以下操作之一:Amazon IoT GreengrassDocker 容器。

  • Include-v /tmp/logs:/greengrass/v2/logs:ro在您的docker run命令。

    修改volumes在 Compose 文件中阻止以包含以下行,然后再运行docker-compose up命令。

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

然后你可以查看你的日志/tmp/logs在你的主机上看 Greengrass 日志Amazon IoT Greengrass在 Docker 容器内运行。

有关运行 Greengrass Docker 容器的信息,请参阅运行Amazon IoT Greengrass在 Docker 中使用手动配置运行Amazon IoT Greengrass在 Docker 中使用自动配置

将交互式 Shell 附加到 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 的故障.