CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim: OCI runtime create failed:

CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim: OCI runtime create failed:

完整的错误信息如下:

CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/": permission denied: unknown Entry point

我有一个应用程序,我用它创建了一个 docker 图像,并且它在 lambda 上运行良好。图片在 ECR 上。我删除了我的 lambda 函数,从该映像在 ECS 中创建了一个 docker 容器并使用了 Fargate。

这是我用于创建此任务的 Terraform 上 ECS 模块中的 main.tf 文件。

    resource "aws_ecs_cluster" "cluster" {
  name = "python-cloud-cluster"

}

resource "aws_ecs_service" "ecs-service" {
  name            = "python-cloud-project"
  cluster         = aws_ecs_cluster.cluster.id
  task_definition = aws_ecs_task_definition.pcp-ecs-task-definition.arn
  launch_type     = "FARGATE"
  network_configuration {
    subnets         = var.service_subnets
    security_groups = var.pcp_service_sg
    assign_public_ip = true
  }
  desired_count = 1
}

resource "aws_ecs_task_definition" "pcp-ecs-task-definition" {
  family                   = "ecs-task-definition-pcp"
  network_mode             = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  memory                   = "1024"
  cpu                      = "512"
  task_role_arn            = var.task_role_arn
  execution_role_arn       = var.task_role_arn
  container_definitions    = <<EOF
[
  {
    "name": "pcp-container",
    "image": "775362094965.dkr.ecr.us-west-2.amazonaws.com/weather-project:latest",
    "memory": 1024,
    "cpu": 512,
    "essential": true,
    "entryPoint": ["/"],
    "portMappings": [
      {
        "containerPort": 80,
        "hostPort": 80
      }
    ]
  }
]
EOF
}

我在网上找到了一个基本模板并对其进行了修改以满足我的需要。我刚刚意识到任务定义中的入口点设置为 ["/"],这是我使用的模板的默认值。我应该将其设置为什么?或者这个错误是由其他问题引起的?

entryPoint可选的,不知道是什么的可以不用指定。

您的情况是 /,这是不正确的。它应该是一些可执行文件(例如 /bin/bash),这取决于您的容器和容器的作用。但同样,它是可选的。

您必须检查 weather-project 容器的文档,看看它到底做了什么以及如何使用它。