为什么我的AWS ECS任务需要docker api 1.18?

时间:2016-06-21 14:42:11

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

我在创建云形成堆栈时遇到困难,因为当我尝试运行任务时遇到错误。出现错误是因为实例的docker api版本是1.19,并且任务定义声明它需要docker api版本1.17或1.18。但是,我从未指明应该要求这些版本,我不知道这些要求来自何处。

这是我的任务定义:

"uiTaskDefinition" : {
    "Type" : "AWS::ECS::TaskDefinition",
    "Properties" : {
        "ContainerDefinitions" : [{
            "Name" : "ui",
            "Memory" : "512",
            "PortMappings" : [
                {
                    "HostPort" : "8085",
                    "ContainerPort" : "8080"
                }
            ],
            "Image" : {"Fn::Join" : ["", ["", {"Ref" : "DockerImageRepository"}, ":example_", "ui"]]},
            "Command" : [
                "example.jar"
            ],
            "Essential" : "true",
            "EntryPoint" : [
                "/bin/bash",
                "/cts/runservice.sh"
            ],
            "MountPoints" : [{
                "ContainerPath" : "/logs/",
                "SourceVolume" : "logs"
            }],
            "Cpu" : "128"
        }],
        "Volumes" : [{
            "Name" : "logs",
            "Host" : {
                "SourcePath" : "/var/log/example"
            }
        }]
    }
},

但是,这就是AWS控制台所说的任务定义(参见顶部的“requiredAttributes”):

{
    "requiresAttributes":[
        {
            "value":null,
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.17"
        },
        {
            "value":null,
            "name":"com.amazonaws.ecs.capability.docker-remote-api.1.18"
        }
    ],
    "taskDefinitionArn":"arn:aws:ecs:us-east-1:example:task-definition/example-uiTaskDefinition:1",
    "status":"ACTIVE",
    "revision":1,
    "containerDefinitions":[
        {
            "volumesFrom":[

            ],
            "memory":512,
            "extraHosts":[

            ],
            "dnsServers":[

            ],
            "disableNetworking":null,
            "dnsSearchDomains":[

            ],
            "portMappings":[
                {
                    "hostPort":xxxx,
                    "containerPort":xxxx,
                    "protocol":"tcp"
                }
            ],
            "hostname":null,
            "essential":true,
            "entryPoint":[
                "/bin/bash",
                "/cts/runservice.sh"
            ],
            "mountPoints":[
                {
                    "containerPath":"/logs/",
                    "sourceVolume":"logs",
                    "readOnly":null
                }
            ],
            "name":"ui",
            "ulimits":[

            ],
            "dockerSecurityOptions":[

            ],
            "environment":[

            ],
            "links":[

            ],
            "workingDirectory":null,
            "readonlyRootFilesystem":null,
            "image":"example:example_ui",
            "command":[
                "/example.jar"
            ],
            "user":null,
            "dockerLabels":{

            },
            "logConfiguration":null,
            "cpu":128,
            "privileged":null
        }
    ],
    "volumes":[
        {
            "host":{
                "sourcePath":"/var/log/example"
            },
            "name":"logs"
        }
    ],
    "family":"example"
}

那么这些必需属性来自何处以及如何摆脱它们?

1 个答案:

答案 0 :(得分:1)

我不确定为什么,但更新我的AMI解决了这个问题。 最初:ami-4fe4852a 现在:ami-8f7687e2