【填坑!】在x86的虚拟机上搭建arm64的docker,之前一直都只能使用“一次性”docker,重新run就报错standard_init_linux.go:211: exec user proc


【原标题】留个坑,在amd64的虚拟机上搭建arm64的docker,只能使用一次,重启电脑后再run就报错:standard_init_linux.go:211: exec user process caused “exec format error”

目前还没排查到问题,网上暂时也没找到解决方案,已经困扰好几天,先留个坑,回头来填。有知道的大佬,可以指教一下。


来填坑啦!

这个困扰我将近一周时间的问题,今天终于解决了。

之前对docker的了解只停留在简单使用层面,曾经用到的项目是写好了脚本用脚本来使用docker的,每次用到的命令就只有“./dev_start.sh”“./dev_into.sh”“exit”。这次是想在x86的平台上搭建一个可用的arm64平台的docker,用以解决交叉编译之苦。然而折腾了好几天。

走过的坑

其实搭建环境步骤不多,很简单,参照这篇博客【史上较全docker镜像制作流程(有基础镜像,非docker build)】即可搞定

我的问题在于创建好的docker镜像只能最开始创建一次容器,虚拟机关机重启后就会出现镜像创建不了容器,已创建的唯一容器也进不去。分别在Ubuntu16.04和Ubuntu18.04上都试了,结果都是一样的情况。找遍全网没找到解决方案。

关键在于用同样的方法搭建docker在其他两位同事电脑上不会出现这个问题,唯独我这有问题,我****(脏话)

顺便看了一下《每天5分钟玩转Docker容器技术》这本书(没看完),初学者可以看看。简单做了下笔记:【学习笔记】《每天5分钟玩转Docker容器技术》

用同事的镜像来跑,也是一样的情况。在解决问题的过程中,网上有部分错误码一样,但实际情况不一样,提供了不同的思路,我一个个踩了。甚至有帖子说是因为镜像坏掉了,需要把docker完全卸载掉,我也照做了。顺便贴一下完全卸载及重装docker的方法【Ubuntu16.04 docker干净卸载与安装

鉴于这个问题困扰太多天,今天决定无论如何也要解决它,解决不了它我就要被解决了,然后下午又慢慢的捋了一下思路,思考为什么第一次可以,不重启虚拟机就可以。一旦重启虚拟机就不行。最终确定了问题,虽然还是没搞明白为什么只有我的电脑需要这么操作。

具体解决方法

如果你也要在x86上搭建arm64的docker环境,且按照这篇博客【史上较全docker镜像制作流程(有基础镜像,非docker build)】操作后,幸运的跟我出现了一样的情况,那么下面的方法或许对你有用

#每次重启虚拟机后,先运行这条指令即可
docker run --rm --privileged multiarch/qemu-user-static:register
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值