【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
相关推荐
车口几秒前
一套代码实现表单新增,编辑和预览
架构
楠神说软件测试43 分钟前
Docker命令(全)
docker
LuiChun44 分钟前
docker desktop更新到【4.45.0 】后,旧容器镜像都丢失了
docker·容器·dubbo
子兮曰1 小时前
🔥C盘告急!WSL磁盘暴增?三招秒清20GB+空间
前端·windows·docker
ZLRRLZ1 小时前
【Docker】Docker安装
运维·docker·容器
Light601 小时前
架构矩阵实战:业务边界×技术分层的双螺旋落地法
架构·业务模块·ai 原生·架构矩阵·技术分层·契约治理
Dxy12393102163 小时前
Docker常用命令详解
docker·容器·eureka
清寒敲代码3 小时前
k8s核心技术-Helm
运维·容器·kubernetes
魏 无羡3 小时前
k8s 获取真实ip地址
tcp/ip·容器·kubernetes
人工智能训练师3 小时前
在Ubuntu中如何使用PM2来运行一个编译好的Vue项目
linux·运维·服务器·vue.js·ubuntu·容器