使用 M1 处理器在 Mac OSX 上构建的映像,部署到 EC2 实例。但是当脚本运行时,它会产生错误:
standard_init_linux.go:219: exec user process caused: exec format error
在 Stackoverflow 的其他地方,这被解释为操作系统架构不匹配。果然在 EC2 实例上运行“uname -m”显示它是 x86_64,“docker image inspect”显示容器具有架构 arm64。
这是我不明白的地方。我的 Mac 上的“uname -m”也显示为 x86_64。那么容器如何继承不同的架构呢?
更重要的是,如何在我的 Mac 上构建可以在 EC2 上运行的映像?
Docker 文件很简单
FROM python
WORKDIR /
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY src /src
Run Code Online (Sandbox Code Playgroud)
src 目前包含一些简单的 python 脚本,执行如下:
docker run container/name python test.py
这在我的 Mac 上运行良好,但在 AWS 上执行时会出现上述错误。