docker运行异构镜像详解

 更新时间:2024年12月19日 10:03:43   作者:csdn_书剑  
介绍了在不同CPU架构下运行Docker镜像时遇到的问题及解决方法,作者分享了由于银行使用鲲鹏系统(ARM架构)导致Docker容器运行失败的经历,解决方法包括启用`--platform`参数、安装`qemu-user-static`及`binfmt_misc`

概述

关于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 参数需要 experimentaltrue,通过下面的命令可以验证是否开启

修改 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磁盘空间不释放的问题的解决方法

    Windows的docker删除容器后WSL2磁盘空间不释放的问题的解决方法

    很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪,所以本文介绍了Windows的docker删除容器后WSL2磁盘空间不释放的问题的解决方法,需要的朋友可以参考下
    2024-12-12
  • SQL Server 简介与 Docker Compose 部署SQL Server 容器

    SQL Server 简介与 Docker Compose 部署SQL Server 容器

    SQL Server 是一个功能强大的关系型数据库管理系统,适用于各种规模的应用程序和数据存储需求,在本文中,我将简要介绍 SQL Server 的基本概念,并详细阐述如何使用 Docker Compose 部署 SQL Server 容器,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • docker中mysql初始化及启动失败问题解决方案

    docker中mysql初始化及启动失败问题解决方案

    这篇文章主要介绍了docker中mysql初始化及启动失败问题解决方案的相关资料,需要的朋友可以参考下
    2016-10-10
  • 基于docker的caffe环境搭建方法

    基于docker的caffe环境搭建方法

    这篇文章主要介绍了基于docker的caffe环境搭建方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 手把手教你如何用NAS+Docker搭建WordPress网站

    手把手教你如何用NAS+Docker搭建WordPress网站

    NAS能做的不仅仅是储存,它还能作为一台简单的服务器,完成一些相对简单的工作,这篇文章主要介绍了如何用NAS+Docker搭建WordPress网站的相关资料,需要的朋友可以参考下
    2025-12-12
  • Docker+Vscode搭建(本地/远程)开发环境

    Docker+Vscode搭建(本地/远程)开发环境

    本文介绍了使用Docker+VSCode搭建统一开发环境的完整方案,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • Deepin使用docker安装mysql数据库过程详解

    Deepin使用docker安装mysql数据库过程详解

    这篇文章主要介绍了Deepin使用docker安装mysql数据库过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Docker设置日志滚动的解决方案

    Docker设置日志滚动的解决方案

    Docker容器默认将日志写入同一文件,可能导致磁盘满,解决方案包括修改全局docker.service配置或针对特定容器修改hostconfig.json,下面给大家介绍Docker设置日志滚动的解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • Docker-compose离线安装全过程

    Docker-compose离线安装全过程

    下载docker-compose-Linux-x86_64并上传至CentOS7的/usr/local/bin目录,重命名为docker-compose,添加执行权限,最后通过版本命令测试安装是否成功
    2025-08-08
  • 详解docker部署Jenkins新手使用教程

    详解docker部署Jenkins新手使用教程

    这篇文章主要介绍了详解docker部署Jenkins新手使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论