docker run 失败 在logs中如下错误,standard_init_linux.go:211: exec user process caused “exec format error“

standard_init_linux.go:211: exec user process caused “exec format error”

简述
---------------------------------------更新–2020 11 26-------------------------------------
我遇到此问题就是因为golang编译无法夸平台。即不同的系统,或者CPU内核不同,都会造成此错误。linux arm 下编译的golang 代码不能拿到 linux X86下运行;同理含有golang代码的项目的镜像也无法夸平台。

1 我本人是非运维人员,对docker也只是会用。docker是用golang写的,一些其延伸软件也是用golang写的,我在此之前是不会golang语言。

2出现此错误的可能性可能比较多,我这里可能只是其中一种情况。

3我是在二次开发 开源项目 ui-for-docker ,和portainer一样是一个docker可视化工具遇到的问题。也就是讲源码下载下来后,运行了一个脚本,经过代码压缩,打包,编译(golang),最后docker build 成镜像文件,运行后出的标题错误。

4 问题就出在运行脚本中有一句 ,会调用编译golang的容器,对golang代码编译

5 解决办法 :
如果跟我一样是源码变成 镜像 再运行 ,需要注意用编译golang容器编译源码的脚本

例 :在下图脚本 九点第二个箭头的容器编译的golang文件无法夸平台 第一个箭头才可以。
在这里插入图片描述

结尾:
吐槽 吐槽 吐槽 !!!
我也会经常遇到错误,在国内网络上百度出来的全是一模一样,不知道把别人博文复制过去的意义在哪里 ,觉得写的好,收藏就行了啊 !结果看了半天 也没有差异化的博客 帮助自己来解决问题。

当没有解决方案 试试Google ,论 vpn 重要性

对于源码 github issue 可能会帮你解决问题 。

----------------------------------------第一次编写------------------------------------
此问题是在板件上二次dockerui项目遇到的,板件采用的是arm7l架构。镜像是基于x86_64的centos docker build 出来,之后通过docker save 将此镜像打包成tar文件,再通过docker load 压缩的tar 文件解压成本地镜像。这个镜像转移本身是没有问题,在此之前也进行多次操作。
在docker run的时候显示容器exit状态,docker logs 此容器,就会报如上错误。原因就是因为arch架构不一样,会在docker build 镜像的时候,有所影响。

解决思路
1.拉取官方镜像,依旧报同样错误。
2在dockerhub网址中search此镜像,果然,找到一点线索,如下图红色方框所示:

问题定位
1. 在度娘上的问题,一般指向dockerfile中的entrypoint。我都没有 遇到各种shell
2 以及编码等问题,因为我的project是纯css+js+html. 在Google上找到问题根源所在就是arch不一样。

解决办法
既然问题根源找到了 ,那就好办了 ,只需要在当前arch的linux上重新docker build 就行 。

虽然有时候感觉解决问题像是在办案一样,根据蛛丝马迹来找到问题根源,并解决他 。。 过程还是挺痛苦, 但是结果还是蛮爽的 。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值