docker 嵌入程式执行/bin/sh:Arm 64上的exec格式错误

3bygqnnd  于 2022-11-22  发布在  Docker
关注(0)|答案(1)|浏览(1037)

我的Dockerfile可以在x86机器上工作,但在arm64架构的机器上失败;特别是在a1.2xlargeaws EC2-instance)上。
运行docker compose up -d时出错

#0 0.462 exec /bin/sh: exec format error
------
failed to solve: executor failed running [/bin/sh -c apt-get update]: exit code: 1

停靠文件如下所示

FROM phusion/passenger-ruby27
ENV HOME /root
RUN apt-get update

坞站-v

Docker version 20.10.17, build 100c701

uname -a

Linux Ubuntu SMP Thu Jun 9 13:06:11 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

lsb_版本-a

Ubuntu 20.04.4 LTS
xpcnnkqh

xpcnnkqh1#

phusion/passenger-ruby27存储库通过标签分离基于arm64的图像(截至2022年11月)。
2.3.12.3.1-arm64
假设您要在arm64示例上构建一个arm64映像,解决此问题的一个简单方法是将标记作为构建参数传递。

  • 停靠文件:*
ARG BASE_TAG
FROM phusion/passenger-ruby27:$BASE_TAG
ENV HOME /root
RUN apt-get update
  • 构建示例:*
# on arm
$ docker build --build-arg BASE_TAG=2.3.1-arm64 .

# on amd
$ docker build --build-arg BASE_TAG=2.3.1 .

相关问题