制作for arm64 cpu架构的docker镜像

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作for arm64 cpu架构的docker镜像相关的知识,希望对你有一定的参考价值。

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

究其原因,是用于构建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容器了。

以上是关于制作for arm64 cpu架构的docker镜像的主要内容,如果未能解决你的问题,请参考以下文章

Undefined symbols for architecture arm64(其cpu架构)

华为鲲鹏下可用的 Redis docker 镜像

deepin-for-arm64支持

使用 docker buildx 构建多 CPU 架构镜像

银河麒麟 arm架构 ubuntu docker制作jdk镜像

ARM64架构下,OpenJDK的官方Docker镜像为何没有8版本