¿Cómo puedo solucionar los errores "CannotPullContainerError" cuando inicio una tarea de EC2 en Amazon ECS?
Cuando inicio una tarea de Amazon Elastic Compute Cloud (Amazon EC2) en Amazon Elastic Container Service (Amazon ECS), se muestra el error "CannotPullContainerError".
Descripción corta
El error CannotPullContainerError se produce por los siguientes motivos:
- Una tarea de tipo inicio de Amazon EC2 no puede extraer la imagen porque configuraste la red de forma incorrecta.
- Un rol de AWS Identity and Access Management (IAM) no tiene permisos para extraer imágenes.
- Has alcanzado la cuota de velocidad de DockerHub.
- El nombre o la etiqueta de la imagen no existen.
- La definición de la tarea hace referencia a una imagen que se encuentra en otra cuenta de AWS.
- El sistema de archivos está lleno.
Resolución
Uso del runbook AWSSupport-TroubleshootECSTaskFailedToStart para solucionar problemas
Para solucionar los problemas de las tareas de Amazon ECS que no se inician, utiliza el runbook AWSSupport-TroubleshootECSTaskFailedToStart. Cuando ejecutes el runbook, debes usar el ID de la tarea fallida más reciente. Si la tarea fallida forma parte de un servicio de Amazon ECS, usa la tarea fallida más reciente del servicio. La tarea fallida debe estar visible en ECS:DescribeTasks durante la automatización. De forma predeterminada, las tareas de Amazon ECS están visibles durante 1 hora después de entrar en el estado Detenido.
Para iniciar el runbook, consulta AWSSupport-TroubleshootECSTaskFailedToStart. Según el resultado de la automatización, utiliza una de las siguientes resoluciones.
Importante: Usa el runbook AWSSupport-TroubleshootECSTaskFailedToStart en la misma región de AWS en la que se encuentran los recursos del clúster de Amazon ECS.
La configuración de red de tu instancia de contenedor de Amazon ECS es incorrecta
Si tu instancia de contenedor de Amazon ECS no tiene conexión a Internet, no podrás llegar al punto de enlace de Amazon Elastic Container Registry (Amazon ECR). Sin una conexión al punto de enlace, la instancia no podrá extraer la imagen. Para comprobar que tu instancia de contenedor de Amazon ECS tiene acceso a Internet, lleva a cabo las siguientes acciones:
- Confirma que tus instancias tengan acceso a Internet a través de una puerta de enlace de Internet o una puerta de enlace de NAT. Para solucionar los problemas de conectividad de la puerta de enlace de NAT, consulta ¿Por qué no puedo usar NAT para conectar mi instancia de EC2 en una subred privada a Internet?
Nota: Puedes usar AWS PrivateLink en lugar de una puerta de enlace de NAT. Para evitar errores, asegúrate de configurar correctamente PrivateLink. - Comprueba que has permitido el acceso HTTPS entrante a través del puerto 443 en los niveles de instancia, grupo de seguridad y lista de control de acceso de la red (ACL de la red). Para solucionar problemas de conectividad de la puerta de enlace de Internet, consulta ¿Por qué mi instancia de Amazon EC2 no puede acceder a Internet mediante una puerta de enlace de Internet?
- Si utilizas un punto de enlace de nube virtual privada (VPC) para conectarte a un punto de enlace de Amazon ECR, comprueba los grupos de seguridad de las instancias de contenedor de Amazon ECS. Permite que tu instancia de contenedor de Amazon ECS envíe tráfico a grupos de seguridad para el punto de enlace de VPC.
- Si recibes el mensaje de error CannotPullContainerError: API error, consulta ¿Cómo puedo resolver las tareas de Amazon ECS que no pueden extraer imágenes de Amazon ECR?
Tu rol de IAM no tiene permisos para extraer imágenes
Confirma que el rol de IAM de la instancia asociado al perfil de instancia tenga permisos para acceder al repositorio de Amazon ECR.
Nota: La política administrada de AWS AmazonEC2ContainerRegistryReadOnly proporciona los permisos mínimos necesarios para extraer imágenes.
Has alcanzado la cuota de tasa de extracción de DockerHub
Si estás intentando extraer una imagen de DockerHub y has alcanzado la cuota de tasa de extracción, recibirás el mensaje de error siguiente:
"CannotPullContainerError: inspect image has been retried 5 time(s): httpReaderSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/manifests/sha256:2bb501e6429 Too Many Requests - Server message: toomanyrequests:"
Para resolver este problema, consulta ¿Cómo puedo resolver el error "CannotPullContainerError: You have reached your pull rate limit" en Amazon ECS?
El nombre o la etiqueta de la imagen no existen
Si defines una imagen o etiqueta alojada en Amazon ECR pero la imagen o la etiqueta no existen, recibirás el siguiente error:
"Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref 123456789.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: 123456789**.dkr.ecr.ap-southeast-2.amazonaws.com/image-name:tag: not found**"
Para resolver este problema, comprueba que el campo de imagen tenga el valor correcto en la definición de la tarea. Confirma que el repositorio correspondiente y la etiqueta existan en el registro de contenedores del que se va a realizar la extracción.
Si la tarea extrae una imagen de un registro distinto de Amazon ECR y le falta información, recibirás otro error. Si la imagen no existe, la etiqueta no existe o no has proporcionado las credenciales del registro, se mostrará el error siguiente:
"Cannotpullcontainererror: pull image manifest has been retried 1 time(s): failed to resolve ref docker.io/library/invalid-name:non-existenttag: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed"
Para resolver este problema, verifica el campo de imagen en la definición de la tarea. Confirma que la imagen existe en el registro de contenedores correspondiente. Si la imagen existe, asegúrate de proporcionar las credenciales correctas. Para obtener más información, consulta Uso de imágenes de contenedores que no sean de AWS en Amazon ECS.
La imagen a la que se hace referencia en la definición de la tarea está en otra cuenta
Si la imagen está en otra cuenta, es posible que se muestre el siguiente mensaje de error:
"Cannotpullcontainererror: pull access denied for 123456789***.dkr.ecr.us-east-1.amazonaws.com/image-name:tag, repository does not exist or may require 'docker login': denied: User: arn:aws:sts::012345678**:assumed-role/role-name/ec2 instance id is not authorized to perform: ecr:BatchGetImage on resource: arn:aws:ecr:us-east-1:123456789*:repository/image-name:tag because no resource-based policy allows the ecr:BatchGetImage action"
Para resolver este problema, debes permitir la acción ecr:batchGetImage en las políticas del repositorio de la cuenta en la que se encuentra la imagen.
Por ejemplo, la instancia asociada a tu clúster de Amazon ECS está en la cuenta A y la definición de la tarea hace referencia a una imagen de la cuenta B. Las políticas de repositorio de la cuenta B deben permitir que ecr:batchGetImage ocupe el rol de IAM de la instancia en la cuenta A. También debes activar el permiso entre cuentas en la política de repositorios. A continuación, confirma que la instancia de la cuenta A puede extraer la imagen de la cuenta B. Para obtener más información, consulta ¿Cómo puedo permitir que una cuenta secundaria envíe o extraiga imágenes de mis repositorios de imágenes de Amazon ECR
El sistema de archivos está lleno
Si el sistema de archivos está lleno, recibirás el siguiente error:
"CannotPullContainerError: write /var/lib/docker/tmp/GetImageBlob2923440728: no space left on device"
Para solucionar este problema, toma las siguientes medidas:
- Idioma
- Español
Vídeos relacionados


Contenido relevante
preguntada hace 2 años
preguntada hace 9 meses
preguntada hace un año
preguntada hace 8 meses
preguntada hace un año