【问题标题】:ECS invalid reference format errorECS 无效参考格式错误
【发布时间】:2018-12-31 20:27:26
【问题描述】:

我尝试通过运行一个任务(由任务定义定义)来使用 Amazon ECS 部署和运行一个简单的 Dockerized Ruby 后端,但它无法运行我的命令并返回此错误:

CannotPullContainerError: API 错误 (400): 无效的参考格式

我尝试运行 echo "Hello" 的小入口点命令,但无论它是 exec 形式还是 shell 形式,它都会返回相同的错误。我尝试在本地终端中运行此命令,它运行良好:

$ docker-compose run job echo 'HELLO_WORLD'
HELLO_WORLD

这是我的集群任务的详细信息部分中显示的错误消息:

Status reason   CannotPullContainerError: API error (400): invalid reference format
  Entry point   ["echo","HELLO"]

这是我的任务定义 JSON(出于安全原因隐藏某些信息):

{
    "executionRoleArn": null,
    "containerDefinitions": [
        {
            "dnsSearchDomains": null,
            "logConfiguration": null,
            "entryPoint": [
                "echo",
                "HELLO"
            ],
            "portMappings": [],
            "command": [],
            "linuxParameters": null,
            "cpu": 0,
            "environment": [
                {
                    "name": "RAILS_ENV",
                    "value": "production"
                }
            ],
            "ulimits": null,
            "dnsServers": null,
            "mountPoints": [],
            "workingDirectory": null,
            "dockerSecurityOptions": null,
            "memory": 7000,
            "memoryReservation": null,
            "volumesFrom": [],
            "image": "<ecs_image_arn>",
            "disableNetworking": false,
            "healthCheck": null,
            "essential": true,
            "links": null,
            "hostname": null,
            "extraHosts": null,
            "user": null,
            "readonlyRootFilesystem": null,
            "dockerLabels": null,
            "privileged": null,
            "name": "<name>"
        }
    ],
    "memory": null,
    "taskRoleArn": "arn:aws:iam::<id>:role/<name>",
    "family": "<test-cluster>",
    "requiresCompatibilities": [
        "EC2"
    ],
    "networkMode": null,
    "cpu": null,
    "volumes": [],
    "placementConstraints": []
}

将 entryPoint 更改为使用命令也不起作用。

Status reason   CannotPullContainerError: API error (400): invalid reference format
    Command ["echo","HELLO"]

我是否遗漏了使简单的echo 命令起作用的任何配置?

【问题讨论】:

  • 你有 部分的例子吗?
  • @OlivierCazade 显然我使用了 ARN 而不是 URI 链接,如我的 ECR 中所示。感谢您的帮助。

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


【解决方案1】:

“Invalid reference format”表示docker试图解析的镜像名无效。在您的日志中:

   "image": "<ecs_image_arn>",

图片名称确实无效,需要替换为有效的图片名称。如果您在此问题中出于隐私考虑替换了该字符串,则删除的部分就是您的错误所在。

【讨论】:

  • 显然我使用了 ARN 而不是 URI 链接,如我的 ECR 存储库中所示,现在它在将其更改为指向最新标签的 URI 后可以正常工作。感谢您的帮助。
【解决方案2】:

确保使用存储库 URI不是 ARN(如果使用 ECR 图像)。 Some AWS documentation(请参阅“未找到图像”部分)将 ARN 描述为有效值,但它似乎不起作用。

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多