AWS批处理无法启动Dockerfile-mark_init_linux.go:219:exec用户进程导致:exec格式错误

q9yhzks0  于 2022-09-19  发布在  Docker
关注(0)|答案(3)|浏览(180)

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

AWS Batch对任何人都有效吗?

AWS FETCH_AND_GO示例总是失败,甚至遵循了某人模仿AWS示例的在线指南。

我已经尝试为amazonlinux:Latest和ubuntu:20.04创建了Dockerfile,并使用了许多run和cmd。

脚本似乎总是失败,并显示以下错误:

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

一开始,我认为这与我的部署访问权限有关,可能是在amazonlinux中,所以我在SHE文件中使用了chmod 777、chmod-x等。

最后一颗钉子,我现在的剧本是垃圾:

FROM ubuntu:20.04

使用AWS批处理启动此应用程序,不传递任何命令或参数,但仍会失败,并返回相同的错误代码。这几乎是在暗示我的AWS Batch存在设置问题(我使用的是默认向导设置,但更改为A1.Medium服务器),或者AWS Batch存在一些重大问题。

有谁在AWS Batch推出自己的DockerFiles方面取得过成功吗?他们可以分享他们的示例和/或设置参数吗?

提前谢谢您。

neskvpey

neskvpey1#

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

您可以通过自己启动一个A1示例并运行该容器(安装docker后)来测试某个容器是否会运行。我的猜测是,您将会遇到同样的错误。在英特尔或AMD示例上运行应该可以。

要在ARM中使用Batch,您的容器化应用程序需要在ARM上运行。如果您给我举一个确切的例子,我可以给出更多关于如何调整以在A1或Graviton2示例上运行的详细信息。

pgx2nnw8

pgx2nnw82#

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

kx7yvsdv

kx7yvsdv3#

我遇到了同样的问题,这是因为我在我的M1Mac上本地构建了映像。

如果是您的情况,请尝试在按下之前将--platform linux/amd64添加到您的docker构建命令中。

相关问题