x86平台运行arm64平台docker 镜像
本文介绍在x86服务器上安装qemu-aarch64-statick仿真器,以实现x86服务器可以运行docker或docker-compose镜像。
报错信息:
x86服务器默认不能运行ARM平台镜像,会提示如下错误:
WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested
解决方法:
在x86服务器安装运行qemu-aarch64-statick,qemu-aarch64-statick是一个可以利用当前操作系统来运行其它架构的仿真器。
注:qemu-aarch64-statick方式模拟arm平台运行容器,性能较差,对性能要求较高的生成业务不建议使用。
一. 安装qemu-aarch64-statickd
#下载qemu-aarch64-static wget https://github.com/multiarch/qemu-user-static/releases/download/v5.2.0-1/qemu-aarch64-static #移动并添加执行权限 cp qemu-aarch64-static /usr/bin/ chmod +x /usr/bin/qemu-aarch64-static #注册qemu-user-static虚拟机,注:此命令是临时命令,服务器每次启动后都需要重新运行一次。 docker run --rm --privileged multiarch/qemu-user-static:register --reset
注册成功
二. 测试示例
2.1 docker运行arm平台容器
#运行一个arm架构nginx docker run -d --platform arm64 -p 80:80 -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static --name nginx-arm dockerproxy.com/library/nginx:latest
下面两个参数必选添加:
- “–platform”: 指定拉取ARM架构容器,默认拉取自己当前 CPU 平台的镜像。
- "-v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static " 启动容器时将 qemu-aarch64-static带入到容器
2.2 docker-compose运行arm平台容器
# vi docker-compose.yml version: '3' services: nginx-arm: image: dockerproxy.com/library/nginx:latest platform: arm64 #指定容器运行的平台 ports: - 80:80 volumes: - /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static #启动容器时将 qemu-aarch64-static带入到容器三. 系统架构查询方法
#查看镜像使用的平台 docker inspect nginx:latest | grep -i 'architecture' #查看容器使用的平台 docker run -t -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static nginx:latest uname -m #查看本机使用的平台 uname -m
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

