有办法在ECS任务定义中编辑docker-remote-api吗?

问题描述 投票:0回答:1

我最近一直在学习AWS,我一直在尝试使用EC2实例在Ecs集群上运行一个简单的任务。任务定义只是一个简单的定义。它只是从我的私人 ECR 中提取图像以在 ECS 上运行。但是,我无法启动任务并找到有关 docker api 版本的 ecs Agent 错误日志。 enter image description here

我发现我的任务定义总是有这些低于1.24的docker-remote-api版本,而且我找不到编辑它的方法。

"requiresAttributes": [
    {
        "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
    },
    {
        "name": "com.amazonaws.ecs.capability.ecr-auth"
    },
    {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
    },
    {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.28"
    },
    {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
    },
    {
        "name": "ecs.capability.task-eni"
    },
    {
        "name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
    }
],

有关更多信息,我在 ECS 集群上尝试了以下操作系统。

  • 亚马逊 Linux 2023
  • 亚马逊Linux 2
  • 亚马逊 Linux 2(内核 5.10)

ECS代理版本:1.88

我的问题是你有办法使用特定的 docker-remote-api 创建任务定义吗?

amazon-web-services amazon-ecs
1个回答
0
投票

问题似乎在于您的 EC2 实例上的 Docker 版本不支持您的任务定义所需的较新 API 版本。如果 EC2 实例使用较旧的 Amazon 系统映像 (AMI),这种情况很常见。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html

或者您也可以通过 CLI 获取 AMI:

aws ssm get-parameter --name /aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id --region <your-region>

所以基本上您应该为您的 EC2 实例切换到更新的 ECS 优化 AMI。这些 AMI 预先配置了正确的 Docker 版本和 ECS 代理,以便顺利处理 ECS 任务。 如果您不愿意更新 AMI,您可以手动更新 ecs-agent:

sudo yum update -y ecs-init docker 
sudo systemctl restart ecs sudo
systemctl restart docker

但老实说,切换到新的 AMI 通常更容易、更干净。

对于最后一个问题,不,您无法在 Amazon ECS 的任务定义中显式指定或控制 Docker Remote API 版本。

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