我的Dockerfile在x86机器上工作,但在具有arm64
架构的机器上失败;特别是在a1.2xlarge
(一个aws 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
Dockerfile如下所示
FROM phusion/passenger-ruby27
ENV HOME /root
RUN apt-get update
码头-v
Docker version 20.10.17, build 100c701
不名-a
Linux Ubuntu SMP Thu Jun 9 13:06:11 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
lsb_release -a
Ubuntu 20.04.4 LTS
发布于 2022-11-20 12:57:58
phusion/客运专线27存储库通过标记分离基于as 64的图像(截止到11月-2022年)。
假设您想要在您的arm64实例上构建一个arm64映像,解决这个问题的一个简单方法是将标记作为构建参数传递。
Dockerfile:
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 .
https://stackoverflow.com/questions/73253352
复制相似问题