【docker镜像如何在不同的架构上运行】

背景

公司要求在国产的系统和cpu的机器上部署java项目,一开始我以为docker是跨平台通用的,直到我遇到了

javascript 复制代码
standard_init_linux.go:220: exec user process caused "exec format error"

才知道原来不同架构的cpu下不能互通,我的环境是aarch64(arm 精简指令架构)的,而我的镜像是我在window虚拟机下制作的是amd64(amd64 x86-64 其实都是同一个架构属于amd架构)的

查看架构命令如下

javascript 复制代码
docker inspect  镜像id/镜像名称

经过6个小时的研究参考了文章

https://zhuanlan.zhihu.com/p/669307734最终搞定

首先要配置docker的加速地址不然都下载不到镜像

https://github.com/DaoCloud/public-image-mirror?tab=readme-ov-file

去看这个怎么配置镜像加速地址

配置镜像运行使用特殊功能

javascript 复制代码
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.m.daocloud.io",
   "https://dockerhub.icu",
    "https://docker.chenby.cn",
    "https://docker.1panel.live",
    "https://docker.awsl9527.cn",
    "https://docker.anyhub.us.kg",
    "https://dhub.kubesre.xyz"],"experimental": true}

重启docker

javascript 复制代码
systemctl restart docker
docker info 

拉取镜像并运行镜像

javascript 复制代码
docker run --rm --privileged xfan1024/qemu-user-static:ubuntu-23.04-aarch64

上面运行玩就可以拉

检查容器在aarch64下是否能运行x86的容器

javascript 复制代码
docker run --rm -it nginx uname -m
x86_64
相关推荐
Dobby_053 小时前
【Docker】容器网络探索(二):实战理解 host 网络
网络·docker·云原生
九河云5 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
木木子99995 小时前
业务架构、应用架构、数据架构、技术架构
java·开发语言·架构
鼓掌MVP8 小时前
Java框架的发展历程体现了软件工程思想的持续进化
java·spring·架构
小马哥编程10 小时前
【软考架构】案例分析-Web应用设计(应用服务器概念)
前端·架构
花姐夫Jun10 小时前
在 Ubuntu ARM 架构系统中安装并使用花生壳实现内网穿透
arm开发·ubuntu·架构
Wang's Blog12 小时前
Nestjs框架: 微服务事件驱动通信与超时处理机制优化基于Event-Based 通信及异常捕获实践
微服务·云原生·架构·nestjs
brzhang12 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
YXWik612 小时前
新版若依微服务增强swagger增强集成knife4j
微服务·云原生·架构
深思慎考12 小时前
微服务即时通讯系统(服务端)——文件存储模块全链路设计与实现(3)
linux·微服务·架构·c++项目·聊天系统