• 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
    
    • 1

    解决方法:

    在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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注册成功
    在这里插入图片描述

    二. 测试示例

    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
    
    • 1
    • 2

    下面两个参数必选添加:

    • “–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带入到容器
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三. 系统架构查询方法

    #查看镜像使用的平台
    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Android笔记(三)多Activity活动的切换中的简化处理
    python文件操作图形化——python实战项目:单词练习系统
    【审视】Scrum Master的检查清单
    Redis SCAN命令操作实战(详细)
    CrossOver 22Mac和Linux免费中文版系统兼容工具
    今日分享:文字转语音软件哪个好
    算法学习笔记 - 网络流初步
    win10 sourcetree打开一闪就退出
    23年下半年软考系统集成(中项)报名已开始!
    Spring框架(一)Spring核心,设计理念,创建,优缺点,使用场景···
  • 原文地址:https://blog.csdn.net/yeqinghanwu/article/details/132902059