docker运行异构镜像详解
概述
关于docker镜像在不同的cpu架构下运行报错的解决办法,作者踩坑验证,在此分享经验
某次工作遇到需要银行内部部署docker镜像,由于行内已经开始走信创的路线,使用鲲鹏系统,arm架构,结果就遇到了
standard_init_linux.go:219: exec user process caused: exec format error
没办法,只能自己研究一下。
关于 docker 版本
docker运行其他平台容器,需要使用--platform参数来指定平台docker 19.03.9及以上的版本才支持--platform参数- 默认没有开启
--platform参数,需要手动开启,直接执行,会有下面的报错
查看是否开启 experimental 功能
--platform 参数需要 experimental 为 true,通过下面的命令可以验证是否开启
修改 daemon.json 文件,开启 experimental 功能


修改完成后,重启 docker 来验证
systemctl restartdocker docker info | grep -i 'experimental'
binfmt_misc 、QEMU依赖安装
binfmt_misc安装

qemu-user-static安装


安装结果检查

运行arm64v8/centos镜像
docker run -it --rm --platform arm64 -v /root/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/centos:latest /bin/bash
跨架构构建
思路是在构建过程中,如果有RUN指令,在指令前将qemu文件加进去。
以buildah为例,跟docker buildx应该没有差异。

可能出现的问题
内核版本过低报错

解决办法:
- 方法一:升级内核
- 方法二:手动挡实现-p yes功能

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Windows的docker删除容器后WSL2磁盘空间不释放的问题的解决方法
很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪,所以本文介绍了Windows的docker删除容器后WSL2磁盘空间不释放的问题的解决方法,需要的朋友可以参考下2024-12-12
SQL Server 简介与 Docker Compose 部署SQL Server 容器
SQL Server 是一个功能强大的关系型数据库管理系统,适用于各种规模的应用程序和数据存储需求,在本文中,我将简要介绍 SQL Server 的基本概念,并详细阐述如何使用 Docker Compose 部署 SQL Server 容器,感兴趣的朋友跟随小编一起看看吧2023-10-10
手把手教你如何用NAS+Docker搭建WordPress网站
NAS能做的不仅仅是储存,它还能作为一台简单的服务器,完成一些相对简单的工作,这篇文章主要介绍了如何用NAS+Docker搭建WordPress网站的相关资料,需要的朋友可以参考下2025-12-12


最新评论