Solución de problemas de AWS IoT Greengrass en un contenedor Docker
Utilice la siguiente información como ayuda para solucionar problemas relacionados con la ejecución de AWS IoT Greengrass en un contenedor de Docker y para depurar problemas con AWS IoT Greengrass en el contenedor de Docker.
Temas
Solución de problemas al ejecutar el contenedor de Docker
Utilice la siguiente información para ayudar a solucionar problemas con la ejecución de AWS IoT Greengrass en un contenedor de Docker.
Temas
- Error: No se puede realizar un inicio de sesión interactivo desde un dispositivo que no sea TTY
- Error: Unknown options: -no-include-email
- Error: A firewall is blocking file Sharing between windows and the containers.
- Error: Ocurrió un error (AccessDeniedException) al llamar a la operación GetAuthorizationToken: Usuario: arn:aws:iam::account-id:user/<user-name> no está autorizado a realizar: ecr:GetAuthorizationToken en el recurso: *
- Error: Ha alcanzado su límite de tasa de cambios
Error: No se puede realizar un inicio de sesión interactivo desde un dispositivo que no sea TTY
Este error puede producirse al ejecutar el comando aws ecr get-login-password
. Asegúrese de haber instalado la última versión 2 o la versión 1 de AWS CLI. Le recomendamos que utilice la última versión 2 de AWS CLI. Para obtener más información, consulte Installing the AWS CLI en la Guía del usuario de AWS Command Line Interface.
Error: Unknown options: -no-include-email
Este error puede producirse al ejecutar el comando aws ecr get-login
. Asegúrese de que tiene la última versión de la AWS CLI instalada (por ejemplo, ejecute: pip install awscli
--upgrade --user
). Para obtener más información, consulte Instalación de la AWS Command Line Interface en Microsoft Windows en la Guía del usuario de AWS Command Line Interface.
Error: A firewall is blocking file Sharing between windows and the containers.
Puede que reciba este error o un mensaje Firewall Detected
al ejecutar Docker en un equipo Windows. Esto también puede ocurrir si ha iniciado sesión en una red privada virtual (VPN) y su configuración de red impide el montaje de la unidad compartida. En esta situación, desactive la VPN y vuelva a ejecutar el contenedor Docker.
Error: Ocurrió un error (AccessDeniedException) al llamar a la operación GetAuthorizationToken: Usuario: arn:aws:iam::account-id
:user/<user-name> no está autorizado a realizar: ecr:GetAuthorizationToken en el recurso: *
Puede recibir este error al ejecutar el comando aws ecr get-login-password
si no tiene los permisos suficientes para acceder a un repositorio de Amazon ECR. Para obtener más información, consulte los Ejemplos de políticas de repositorios de Amazon ECR y el Acceso a un repositorio de Amazon ECR en la Guía del usuario de Amazon ECR.
Error: Ha alcanzado su límite de tasa de cambios
Docker Hub limita la cantidad de solicitudes de cambio que pueden realizar los usuarios anónimos y gratuitos de Docker Hub. Si supera los límites de tasa de solicitudes de cambio de usuarios anónimos o gratuitos, entonces recibe uno de los siguientes errores:
-
ERROR: toomanyrequests: Too Many Requests.
-
You have reached your pull rate limit.
Para resolver estos errores, puede esperar unas horas antes de intentar realizar otra solicitud de cambio. Si planea enviar una gran cantidad de solicitudes de cambio de forma constante, visite el sitio web de Docker Hub
Depuración de AWS IoT Greengrass en un contenedor Docker
Para depurar problemas con un contenedor de Docker, puede conservar los registros del tiempo de ejecución de Greengrass o asociar un intérprete de comandos interactivo al contenedor de Docker.
Conservación de los registros de Greengrass fuera del contenedor de Docker
Tras detener un contenedor de AWS IoT Greengrass, puede usar el siguiente comando docker cp
para copiar los registros de Greengrass del contenedor de Docker a un directorio de registros temporal.
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
Para conservar los registros incluso después de que un contenedor salga o se elimine, debe ejecutar el contenedor de Docker de AWS IoT Greengrass después de montar en un enlace el directorio
.
/logs/greengrass/v2
Para montar en un enlace el directorio
, realice una de las siguientes acciones cuando ejecute un nuevo contenedor de Docker de AWS IoT Greengrass.
/logs/greengrass/v2
-
Incluya
-v
en su comando/tmp/logs
:
/logs:ro/greengrass/v2
docker run
.Modifique el bloque
volumes
en el archivo de Compose para incluir la siguiente línea antes de ejecutar el comandodocker-compose up
.volumes: -
/tmp/logs
:
/logs:ro/greengrass/v2
A continuación, puede consultar los registros en
en el host para ver los registros de Greengrass mientras AWS IoT Greengrass se ejecuta en el contenedor de Docker./tmp/logs
Para obtener información sobre cómo ejecutar contenedores de Docker de Greengrass, consulte Ejecución de AWS IoT Greengrass en Docker con aprovisionamiento manual y Ejecución de AWS IoT Greengrass en Docker con aprovisionamiento automático.
Asociación de un intérprete de comandos interactivo a un contenedor de Docker
Cuando utiliza docker exec
para ejecutar comandos dentro del contenedor de Docker, esos comandos no se capturan en los registros de Docker. Registrar los comandos en los registros de Docker puede ayudarlo a investigar el estado del contenedor de Docker de Greengrass. Realice una de las siguientes acciones siguientes:
-
Ejecute el siguiente comando en un terminal independiente para adjuntar la entrada, la salida y el error estándar del terminal al contenedor en ejecución. Esto le permite ver y controlar el contenedor de Docker desde su terminal actual.
docker attach
container-id
-
Ejecute el siguiente comando en un terminal independiente. Esto le permite ejecutar sus comandos en modo interactivo, incluso si el contenedor no está conectado.
docker exec -it
container-id
sh -c "command
> /proc/1/fd/1"
Para solucionar problemas generales de AWS IoT Greengrass, consulte Solución de problemas de AWS IoT Greengrass V2.