返回目录

在 Apple 芯片的 Mac 上给 x86 服务器做镜像

问题

Apple 芯片的 Mac 是 arm64 架构,云服务器大多是 x86_64(也叫 amd64)。在 Mac 上直接 docker build 出来的镜像是 arm64 的,放到服务器上一跑就报:

exec format error

意思是这个程序的指令集服务器的 CPU 看不懂。

构建时指定平台

docker buildx build --platform linux/amd64 -t myapp:1 --load .

构建完确认一下架构:

docker image inspect myapp:1 --format '{{.Architecture}}'
# 应该输出 amd64

不用镜像仓库,直接传到服务器

个人项目没必要为了传一个镜像去开镜像仓库。docker save 把镜像打成一个包,从管道里经过 ssh 直接交给服务器上的 docker load:

docker save myapp:1 | gzip | ssh myserver 'gunzip | docker load'

中间不落地成文件,传完服务器上 docker images 就能看到。

踩过的坑