docker 如何在MacBook M2 arm 64上构建AWS/x64部署映像?

ewm0tg9j  于 2023-01-20  发布在  Docker
关注(0)|答案(1)|浏览(938)
    • 已解决**

按照下面zessx的评论,我最终通过将export DOCKER_DEFAULT_PLATFORM="linux/amd64"添加到我的zsh配置文件中来解决这个问题。
我最近收到了MacBook Pro M2的工作和运行到问题时,我cdk deploy从它.有一个 numpy 导入问题,特别是有关其"C扩展".
原始错误为:没有名为"numpy.core._multiarray_umath"的模块。
我看到cdk部署一开始,Docker Desktop就有了第一层"ARCHITECTURE arm64"。我猜这至少是构建在x64 AWS架构上运行时遇到问题的部分原因。我是不是不能在本地进行这样的构建?
谢谢!
我尝试了几个不同版本的numpy导入
从同事的x64笔记本电脑上部署相同代码并运行。

hujrc8aj

hujrc8aj1#

Docker将尝试使用适合您本地架构的映像。新的Apple M1/M2使用ARM 64架构,因此默认情况下Docker将搜索ARM 64映像。
在您的例子中,当运行cdk deploy时,您可能在后端构建一个映像,该映像将使用ARM 64架构构建,但预计将在AMD 64架构上运行。
你有几种方法来确保你正在为正确的拱门构建你的图像。

在Docker命令中使用--platform标志

docker build -t $IMAGE --platform linux/amd64 .
docker push ${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com/${IMAGE}

在停靠文件中使用--platform标志

FROM ruby:latest as development
RUN …

FROM --platform=linux/amd64 ruby:latest as production
RUN …

然后,您可以在Docker命令中指定要构建的目标:

docker build -t $IMAGE --target production .

使用DOCKER_DEFAULT_PLATFORM环境变量

export DOCKER_DEFAULT_PLATFORM="linux/amd64"

你也可以在你的.bashrc/.zshrc中添加这一行,但是记住你会一直使用AMD 64仿真,即使是在你的本地项目中,那里有原生的ARM 64镜像。

相关问题