使用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
目前,src文件包含一些简单的Python脚本,可以通过以下方式执行:
docker run container/name python test.py
在我的Mac上运行良好,但在AWS上执行时出现了以上错误。
buildx
强制构建不同平台的镜像 https://www.docker.com/blog/multi-platform-docker-builds/ - Software Engineer