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功能

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker安装java环境的实现步骤

    docker安装java环境的实现步骤

    这篇文章主要介绍了docker安装java环境的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 如何解决docker镜像在不同cpu架构上运行容器报错问题

    如何解决docker镜像在不同cpu架构上运行容器报错问题

    文章主要介绍了如何查看本地Docker镜像的CPU架构类型,并提供了解决x86镜像无法在ARM CPU上运行的问题的方法,通过在Dockerfile中使用`--platform`参数指定CPU架构,可以在构建镜像时选择正确的版本,从而解决架构不匹配的问题
    2024-12-12
  • jenkins+gitlab+nginx部署前端应用实现

    jenkins+gitlab+nginx部署前端应用实现

    在日常开发中,往往可能同时多个项目并行进行开发,本文介绍了jenkins+gitlab+nginx部署前端应用实现,感兴趣的可以了解一下
    2021-05-05
  • docker容器里安装ssh的具体步骤

    docker容器里安装ssh的具体步骤

    本篇文章主要介绍了docker容器里安装ssh的具体步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • docker部署可执行jar包的思路与完整步骤

    docker部署可执行jar包的思路与完整步骤

    对于springboot项目运行,直接是java -jar的方式运行,如果想要放到docker中运行,可以参考本文,下面这篇文章主要给大家介绍了关于docker部署可执行jar包的思路与完整步骤,需要的朋友可以参考下
    2022-07-07
  • 详解Docker中安装配置Oracle数据库

    详解Docker中安装配置Oracle数据库

    本篇文章主要介绍了详解Docker中安装配置Oracle数据库,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • docker构建的镜像的三种方式小结

    docker构建的镜像的三种方式小结

    这篇文章主要为大家详细介绍了docker中构建的镜像的三种方式,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-04-04
  • 如何Docker化Python Django应用程序

    如何Docker化Python Django应用程序

    今天小编就为大家分享一篇关于如何Docker化Python Django应用程序的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • dockerfile制作apache镜像的方法

    dockerfile制作apache镜像的方法

    这篇文章主要介绍了dockerfile制作apache镜像的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Alpine Docker镜像字体的问题解决操作

    Alpine Docker镜像字体的问题解决操作

    这篇文章主要介绍了Alpine Docker镜像字体的问题解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论