ECS代理无法从ECR成功提取图像

Rya*_*non 7 amazon-web-services amazon-ecs docker

我有一个在VPC中运行的ECS托管EC2实例(在一个私有子网中).尝试在此实例上运行任务时,它似乎无法提取图像.据我所知,从文档中可以看出,ECS代理无需从repo中提取图像.

查看Docker日志,我反复看到以下内容:

level=error msg="Download failed, retrying: dial tcp 54.231.17.81:443: i/o timeout"
Run Code Online (Sandbox Code Playgroud)

ecs-agent日志反复向我显示图像未下载:

Pulling image module="TaskEngine" image="REDACTED.dkr.ecr.us-east-1.amazonaws.com/REDACTED:latest" status="Retrying in 19 seconds"
Run Code Online (Sandbox Code Playgroud)

它最终试图运行图像,但显然失败并退出.在"群集任务"选项卡中向我提供以下消息:

STOPPED (Essential container in task exited)
Run Code Online (Sandbox Code Playgroud)

amzn-ami-2016.03.e和amzn-ami-2016.03.d AMI发生此错误

是否有任何特定的配置或网络规则需要应用才能从ECR中提取?

这里的任何帮助将不胜感激.

作为旁注,该实例可以访问互联网(ping google.com工作正常),当我尝试从Docker Hub中提取图像时,它也可以正常工作.

Man*_*gal 2

要从 ECR 下载映像,容器实例需要访问 ECR/S3 端点。

如果您的子网是私有的,您必须使用 PrivateLink 功能或必须使用 NAT 网关才能到达 ECR 端点。

如果您选择使用 PrivateLink,这包括:

  1. 为 Amazon ECR 创建 VPC 终端节点
  2. 创建 Amazon S3 网关终端节点

如果您选择使用 NatGateway,请将所有流量路由到 NATGateway 并将 AWS IP 范围列入白名单。

参考链接:https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html