arm架构linux运行docker失败,armdocker:在x86上模拟运行arm容器
一、背景
docker 可以在 arm 平台上运行,验证 docker 镜像最直接的方式是在 arm 平台上,但有时候需要在 PC 平台上验证 arm 平台的镜像。本文对此进行介绍。
二、x86依赖环境
x86 无法运行 arm 平台程序,但是 qemu 提供了机制,通过 qemu-arm-static 可以达到目的。在 ubuntu 上安装:
1sudo apt install qemu-user-static
二、实验
Dockerhub 有一些 arm 版本的镜像。以busybox为例。
下载armhf版本的镜像:
1docker pull armhf/busybox
尝试运行:
1
2# docker run -it --rm --name armhfbusybox armhf/busybox
standard_init_linux.go:178: exec user process caused "no such file or directory"
提示出错。
挂载 qemu-arm-static,再运行一次:
1docker run -it --rm --name armhfbusybox -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static armhf/busybox
释义:
-it 指定为交互方式。
–name 指定容器名称。
-v 为挂载文件。
可以成功进入容器,查看内核:
1
2
3/ # uname -a
Linux 87a4431f6f03 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 armv7l GNU/Linux
/ #
架构为 armv7l, 但内核版本与主机完全一致。如下:
1
2# uname -a
Linux latelee 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
从实验知,容器内必须有qemu-arm-static文件,否则无法跑起来。可以在构建时拷贝至镜像中,也可在运行时挂载。有些镜像已经有 qemu-arm-static,直接正常运行即可。如:
1docker run -it --rm multiarch/alpine:armhf-edge /bin/sh
三、qemu-user-static镜像
可以借助 qemu-user-static 镜像,此情况下无须手动拷贝 qemu-arm-static。
1
2
3
4
5# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# docker run --rm -t arm32v7/ubuntu:16.04 uname -m
armv7l
# docker run --rm -t arm64v8/ubuntu:16.04 uname -m
aarch64
出错
提示:
1
2Setting /usr/bin/qemu-arm-static as binfmt interpreter for arm
sh: write error: Invalid argument
去掉yes。
附
参考:
arm架构linux运行docker失败,armdocker:在x86上模拟运行arm容器相关推荐
- ARM架构下部署docker
ARM架构下部署docker 1 环境要求 2 安装与配置docker 2.1? 下载Docker静态包 2.2 移值docker静态包以及组件 2.3 配置docker.service文件 2.4 ...
- 10_Linux ARM架构-离线部署 Docker + MongoDB-银河麒麟V10操作系统
大家好,我是星仔.本博客收录于华星详谈-学习中心.本学习中心收集了Java整个技术体系的所有技术要点.每篇博客后面或者知识点结尾都附带有面试题,提供给大家巩固本章内容. 为各位同胞们能够系统性的掌握整 ...
- 华为鲲鹏arm架构linux服务器安装mysql教程
遇到一个项目是华为鲲鹏arm架构linux服务器(CentOS 7.5 with ARM),刚开始一直按照X86的教程在执行,后来mysql的本地编译命令出现了二进制的错误,于是想到了这个是鲲鹏arm ...
- 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)
换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...
- 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写
bootloader原理和开发-->kernel构建-->文件系统/根文件系统(filesystem/rootfs) APP 一.配置交叉编译环境(可参考嵌入式Linux移植与驱动开发co ...
- arm架构linux内核调试实战
前言 偶然间,发现了一个很好用的仓,可以十分方便地进行 arm 架构的 linux 内核调试,该仓地址如下 https://github.com/cc-droid/v-kernel-qemu ,对应的 ...
- arm架构linux进程调试,gdb-multiarch + gdbserver调试linux arm应用程序
首先安装gdb-multiarch sudo apt-get install gdb-multiarch 把编译好的gdbserver发送到板子目录下 查看gdbsever版本 gdbserver - ...
- arm架构linux系统平板电脑推荐,x86平板电脑排行_X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道...
X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道 JPG,602x402,231KB,374_250 x86平板电脑推荐 JPG,602x402,231KB,374_250 x86平板电脑推荐 ...
- linux下float的寄存器,检测x86上Linux的非正常浮动操作(Detecting denormal float operations on Linux for x86)...
检测x86上Linux的非正常浮动操作(Detecting denormal float operations on Linux for x86) 我正在将一个windows程序移植到linux的过程 ...
最新文章
- 01. Node js Hello world
- 企业私有云解决方案(基于桌面与服务器虚拟化技术)
- Bailian2696 计算表达式的值【入门】
- 实战Citrix XenDesktop 5.5部署
- mac查看进程与杀掉进程
- Python 定时关机、重启命令
- 驱动人生8新版助力电脑性能起飞
- OpenCV中Rect()函数常用操作和使用详解(含绘图示例)+Rectangle()函数用法
- 通信LOGO隐秘史(续集:运营商篇)
- HS0038红外接收模块遇到的问题
- Android Framework 音频子系统(02)音频系统框架
- Django实战教程: 开发企业级应用智能文档管理系统smartdoc(1)
- 传统蓝牙BR/EDR的搜索Inquiry
- EasyExcel3.0.5 解决大数据导入导出,防止OOM
- Completed 404 NOT_FOUND,Whitelabel Error Page
- smart-sso单点登录(三):App登录支持
- Mac 系统下查看隐藏文件夹的方法
- python中pymysql的小坑
- vue-router的addRoute方法实现权限控制
- 印象笔记桌面快捷键图标显示不出来,重装无效(win10图文版)
热门文章
- iOS 设计中 网络请求之 同步请求(json 请求--新方法和老方法)
- PowerDesigner-制作Word导出模版
- java moneyutils_java中每月等额与先息后本计算
- python 检测列表中是否有空值,检查python列表中是否已经存在数字
- 2019年第二届全国大学生大数据技能竞赛通知
- 侏儒排序算法原理与Python实现
- tomcat7.0支持什么版本的jdk_JDK/Java 16 可能带来什么新特性?
- shell 执行失败重试_Smart Retry主要是用来进行方法重试
- Mysql 里的约束
- 服务器webpack构建性能,[译] 优化 WEBPACK 以更快地构建 REACT