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
相关推荐
运维行者_1 小时前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验
大数据·linux·运维·服务器·人工智能·云计算·aws
不开心就吐槽1 小时前
docker-compose方式快速安装MySQL
运维·docker·容器
芥子沫1 小时前
Docker安装思源笔记&使用指南
笔记·docker·容器·思源笔记
行思理1 小时前
macos 下 docker使用方法 新手教程
macos·docker·容器
青靴2 小时前
关于NGINX,你了解多少?
运维·nginx
运维行者_2 小时前
DDI 与 OpManager 集成对企业 IT 架构的全维度优化
运维·网络·数据库·华为·架构·1024程序员节·snmp监控
命运之光2 小时前
【快速解决】Linux服务器安装Java17运行环境
linux·运维·服务器
你喜欢喝可乐吗?2 小时前
Ubuntu服务器无法显示命令行登录提示
linux·运维·服务器·ubuntu
团儿.2 小时前
Docker Swarm:打造高效、可扩展的容器编排引擎,引领微服务新纪元(上)
docker·微服务·容器·docker-swarm集群
阿Q说代码2 小时前
IPIDEA实现数据采集自动化:高效自动化采集方案
运维·python·自动化·数据采集