【问题标题】:AWS Batch Failing to launch Dockerfile - standard_init_linux.go:219: exec user process caused: exec format errorAWS Batch 无法启动 Dockerfile -standard_init_linux.go:219:exec 用户进程导致:exec 格式错误
【发布时间】:2021-03-04 01:37:31
【问题描述】:

我正在尝试使用 AWS Batch 启动一个 linux 服务器,该服务器实质上将执行 AWS 中包含的 fetch and go 示例(从 S3 下载一个 SH 并运行它)。

AWS Batch 对任何人都有效吗?

aws fetch_and_go 示例总是失败,甚至遵循模仿 aws 示例的其他在线指南。

我尝试使用大量 RUN 和 CMD 为 amazonlinux:latest 和 ubuntu:20.04 创建 Dockerfile。

脚本似乎总是因错误而失败:

standard_init_linux.go:219: exec user process caused: exec format error

起初我认为这可能与我在 amazonlinux 中的部署访问权限有关,因此在 she 文件上使用了 chmod 777、chmod -x 等。

棺材里的最后一颗钉子,我现在的剧本是乱七八糟的:

FROM ubuntu:20.04

使用 AWS Batch 启动它,没有传递任何命令或参数,它仍然失败并显示相同的错误代码。这几乎是在暗示我的 AWS Batch 存在设置问题(我使用默认向导设置,但更改为 a1.medium 服务器除外),或者 AWS Batch 存在一些重大问题。

有人在 AWS Batch 启动自己的 Dockerfile 方面取得了成功吗?他们可以分享他们的示例和/或设置参数吗?

提前谢谢你。

【问题讨论】:

    标签: amazon-web-services docker ubuntu


    【解决方案1】:

    A1 实例是基于 ARM 的第一代 Graviton CPU。您尝试运行的映像很可能需要 x86 CPU(Intel 或 AMD)。任何带有“g”的实例类(“c6g”或“m5g”)都是 Graviton2,它也是基于 ARM 的,不适用于默认示例。

    您可以通过自己启动 A1 实例并运行容器(在安装 docker 之后)来测试特定容器是否会运行。我的猜测是你会得到同样的错误。在 Intel 或 AMD 实例上运行应该可以工作。

    要将 Batch 与 ARM 结合使用,您的容器化应用程序需要在 ARM 上运行。如果您指出确切的示例,我可以详细说明如何调整以在 A1 或 Graviton2 实例上运行。

    【讨论】:

      【解决方案2】:

      除了其他评论。您可以自己创建多架构图像,这将提供正确的架构。 https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-27
        • 2017-07-18
        • 1970-01-01
        • 2018-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多