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

时间:2016-07-14 14:06:11

标签: amazon-web-services docker amazon-ecs

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

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

level=error msg="Download failed, retrying: dial tcp 54.231.17.81:443: i/o timeout"

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

Pulling image module="TaskEngine" image="REDACTED.dkr.ecr.us-east-1.amazonaws.com/REDACTED:latest" status="Retrying in 19 seconds"

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

STOPPED (Essential container in task exited)

amzn-ami-2016.03.e和amzn-ami-2016.03.d AMIs都发生了这个错误

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

非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:1)

要从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