【发布时间】:2016-11-17 12:01:54
【问题描述】:
我有一个在 VPC 中运行的 ECS 托管 EC2 实例(在其中一个私有子网中)。尝试在此实例上运行任务时,它似乎无法提取图像。据我从文档中可以看出,ECS 代理不需要特殊配置即可从存储库中提取图像。
查看 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 AMI 均出现此错误
是否需要应用任何特定的配置或网络规则才能从 ECR 中提取?
我们将不胜感激。
附带说明,该实例确实可以访问互联网(ping google.com 可以正常工作),当我尝试从 Docker Hub 拉取图像时,它也可以正常工作。
【问题讨论】:
-
IAM 配置正确吗?
-
是的,我正在使用附加到我命名为“ecsInstanceRole”的角色的默认 AmazonEC2ContainerServiceforEC2Role 策略此角色附加到每个 EC2 实例
-
你能从实例上的 bash 提示符拉取图像吗?
-
并非没有进一步的程序,因为推荐的 AMI 未安装 aws-cli。因此“docker pull”将不会被授权。
-
您可以在没有 AWS cli 的情况下进行授权。在其他地方执行 aws ecr get-login 并在 ecs 实例上运行输出以尝试手动拉取。
标签: amazon-web-services docker amazon-ecs