【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
相关推荐
zh73147 分钟前
Docker Desktop docker_data.vhdx 使用时间长了过大,解决办法
运维·docker·容器
墨神谕10 分钟前
Docker Compose 从入门到实战:核心概念、YAML 配置详解、常用命令与多容器部署
运维·docker·容器
Tronlong创龙30 分钟前
TLT153工控机:Docker 环境部署与容器开发实践(上)
docker·嵌入式开发·硬件开发·工业控制·工业开发板
KIDULT°39 分钟前
【K8s 实战】Volume 存储、PV/PVC、ConfigMap 与 Secret 完整实验
云原生·容器·kubernetes
木雷坞1 小时前
PHP两项9.2分漏洞:Docker容器更新与版本核验教程
开发语言·docker·php
zzu123zsw1 小时前
业务拆分后的治理深水区:解构企业级微服务六大核心设计模式与高可用落真实践
微服务·设计模式·架构·高可用·微服务架构设计
qianyuqiye11 小时前
K8s 命名空间与 Pod 入门:从概念到实战
java·docker·kubernetes
吴建旭 智宅焕10 小时前
智能家居交付计价模型的设计与实现:按时间计费与交付确定性架构
架构·智能家居
这个DBA有点耶15 小时前
深入 OLTP 锁与并发:从行锁到分布式事务的一致性权衡
数据库·架构·产品
fengkai454515 小时前
3、Kubernetes的Namespace&Contexts&Pod&YAML格式
运维·容器·kubernetes·k8s·namespace·yaml·pod