对 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: 未知选项:-no-include-email

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

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

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

Error: 调用 GeneDeException 操作时发生错误 (AccessException): 用户:arn: iam።account-id:用户/<user-name> 未授权执行:ECR:数据化资源上的令牌:*

在运行aws ecr get-login-password命令,如果您没有足够的权限访问 Amazon ECR 存储库。有关更多信息,请参阅 。亚马逊 ECR 存储库策略示例访问一个亚马逊 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 容器。

将 Greengrass 日志保留在 Docker 容器之外

在您停止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块,以包含以下行,然后再运行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疑难解答,请参阅Troubleshooting.