制作for arm64 cpu架构的docker镜像

我前段时间买了个阿里云,没有留意CPU的架构是ARM的,结果部署系统的时候就发现出问题了,部署在docker里的容器实例根本跑不起来,提示什么执行文件格式错误(“exec format error”)。
制作for arm64 cpu架构的docker镜像_第1张图片

究其原因,是用于构建docker容器的实例是for x86架构的。arm与x86是CPU的两个不同体系。简而言之,x86是cisc,复杂指令集,尽量依靠硬件来实现计算机指令;而arm是risc,精简指令集,试图依靠简单指令的组合迭代完成复杂指令,详见拙作《x86、amd、arm和GPU》。因此在x86开发环境中创建的镜像,并不能用于在arm操作系统中创建docker容器实例。

解决办法是,将我们发布的jar包或网站文件,在arm操作系统中创建镜像,然后用这些镜像来创建docker容器。

比如我有个vue项目,发布出dist,改名为myweb,现在制作一个for arm64的镜像:

sudo docker buildx build --platform linux/arm64 -t myweb:1.0.0 -o type=docker .

buildx应该是docker中的扩展,是一个插件。上述语句中的参数,–platform linux/arm64,这个肯定是顾名思义,非常明显,无须多言;而-o type=docker,是 -output type=docker的缩写,大约意思是输出支持指定操作系统类型的docker镜像。“.“则代表Dockerfile文件在当前目录下。

这样子创建出来的镜像,就可以用于在for arm64架构的linux里创建docker容器了。

你可能感兴趣的:(应用,arm64,exec,format,format,error,docker)