docker run 失败在logs中如下错误,standard

tech2022-07-14  166

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 就行 。

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

最新回复(0)