我有一个存储在AWS ECR上的docker容器,使用我创建的Task这个容器。当我在Fargate上运行Task时,服务从PROVISIONING> PENDING(红色)> STOPPED状态移动。
服务事件或CloudWatch中没有日志。绝对没办法知道什么是真正的问题。
知道哪种方式移动,AWS文档没有帮助。
我也看到了这个错误。在我的情况下,问题是我的容器定义中有一个无效的image
值。根据image
的https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html说明,该图像通常是repository_url和image标签
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的调试信息非常有限。这是我的提示
希望能帮助到你
根据我的经验,您需要在ECR中添加权限。在您的存储库中有一个名为权限的选项卡。添加您认为需要的权限。
正如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:”,因此格式错误无效。