Docker 容器无法在使用 AWS ECR 的 AWS ECS 中运行

Docker Container not working in AWS ECS using AWS ECR

我只有一个 docker 容器,必须使用带有 Elastic Beanstalk 的 AWS ECR 部署在 AWS 云上。我正在使用 Dockerrun.aws.json 文件来提供有关存储库详细信息的信息。我已将图像推送到我的 docker 集线器和 Elastic Container Registry。

在 ECS 中使用 DockerHub,它可以从 docker 集线器中拉取 docker 图像并启动容器,没有任何问题并按预期运行应用程序。另一方面,当从同一应用程序的 AWS ECR 存储库中提取图像时,容器会停止。部署失败,原因如下:Essential container in task exited

Dockerrun.aws.json

{
    
    "containerDefinitions": [
        {
            "essential": true,
            "image": "01234567891.dkr.ecr.us-east-1.amazonaws.com/app:1",
            "memory": 512,
            "name": "web",
            "portMappings": [
                {
                    "containerPort": 5000,
                    "hostPort": 80
                }
            ]
        }
    ],
    "family": "",
    "volumes": [],
    "AWSEBDockerrunVersion": "2"
}

我登录到实例并尝试获取容器的日志。 但是,我得到了这个错误 standard_init_linux.go:211: exec user process caused "exec format error"

Dockerfile

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

任务定义或 docker-compose 文件中似乎有 depended on docker 容器。

如果容器 BA 上打开,并且 A 是临时服务,因此容器 B 将自动退出。

您需要调试 A 退出的原因。

任务中的基本容器已退出

If a container marked as essential in task definitions exits or dies, that can cause a task to stop. When an essential container exiting is the cause of a stopped task, the Step 6 can provide more diagnostic information as to why the container stopped.

stopped-task-errors

问题出在AWS CodeBuild Project上。我错误地为构建提供了错误的架构。 docker 图像构建在不同的体系结构上,并试图 运行 在部署状态下的不同体系结构上。我已更改为用于部署的相同架构。 docker 集线器映像和 ECR 映像似乎工作正常。