我正在尝试使用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方面取得过成功吗?他们可以分享他们的示例和/或设置参数吗?
提前谢谢您。
3条答案
按热度按时间neskvpey1#
A1示例是基于ARM的第一代Graviton CPU。您尝试运行的映像很可能需要x86 CPU(Intel或AMD)。任何带有“g”的示例类(“c6g”或“m5g”)都是Graviton2,它也是基于ARM的,不适用于默认示例。
您可以通过自己启动一个A1示例并运行该容器(安装docker后)来测试某个容器是否会运行。我的猜测是,您将会遇到同样的错误。在英特尔或AMD示例上运行应该可以。
要在ARM中使用Batch,您的容器化应用程序需要在ARM上运行。如果您给我举一个确切的例子,我可以给出更多关于如何调整以在A1或Graviton2示例上运行的详细信息。
pgx2nnw82#
除了另一条评论。您可以自己创建多拱门图像,这将提供正确的架构。https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
kx7yvsdv3#
我遇到了同样的问题,这是因为我在我的M1Mac上本地构建了映像。
如果是您的情况,请尝试在按下之前将
--platform linux/amd64
添加到您的docker构建命令中。