AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?

问题描述 投票:6回答:4

我有一个存储在AWS ECR上的docker容器,使用我创建的Task这个容器。当我在Fargate上运行Task时,服务从PROVISIONING> PENDING(红色)> STOPPED状态移动。

服务事件或CloudWatch中没有日志。绝对没办法知道什么是真正的问题。

知道哪种方式移动,AWS文档没有帮助。

amazon-web-services docker-container aws-fargate aws-ecs
4个回答
4
投票

我也看到了这个错误。在我的情况下,问题是我的容器定义中有一个无效的image值。根据imagehttps://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html说明,该图像通常是repository_url和image标签


2
投票

AWS Fargate缺少一个简单但有天赋的信息,这就是引导您解决问题的原因。让我一步一步解释。

第一步是创建一个Task定义,当你这样做时,你可以定义

 Entry point ["/bin/ls"]
Command     [">","/list.txt","|","echo","/list.txt"]

这相当于/ bin / ls> /list.txt | echo /list.txt。

请注意,两者之间的空格必须用逗号代替。 AWS Farget团队忘记的是,在向导的TaskDefinition> Add Container部分中,这个逗号分隔符echo,helloworld在文本框[![在此处输入图像描述] [1]] [1]中提供。但在任务表单中没有这样的信息。这非常令人困惑。

最后一件事,AWS Fargate的调试信息非常有限。这是我的提示

  • 您只能在Cluster> Task> {TaskName}> {container}下获得可能的错误。出于错误的原因。
  • 如果错误非常小,我总是得到错误代码0,代码0之间没有空格。云上也没有任何东西。
  • 如果错误文本很大(可能大约是20个字符或>),您将在#1和CloudWatch日志中获得它。

希望能帮助到你


1
投票

根据我的经验,您需要在ECR中添加权限。在您的存储库中有一个名为权限的选项卡。添加您认为需要的权限。


0
投票

正如Marc所提到的,这通常是一个错误的DockerHub / repo映像名称。

在我的情况下,这是因为图像名称是由我的Docker Compose文件中的环境变量计算的:

services:
  web:
    image: scipilot/my-web-app:$MY_VERSION_TAG

我在使用ecs-cli compose service up时错过了设置环境变量。所以Fargate可能试图从Docker Hub中提取“scipilot / my-web-app:”,因此格式错误无效。

© www.soinside.com 2019 - 2024. All rights reserved.