Raspberry-pi docker 错误:standard_init_linux.go:178:exec 用户进程导致“exec 格式错误”

Posted

技术标签:

【中文标题】Raspberry-pi docker 错误:standard_init_linux.go:178:exec 用户进程导致“exec 格式错误”【英文标题】:Raspberry-pi docker error: standard_init_linux.go:178: exec user process caused "exec format error" 【发布时间】:2017-08-10 15:57:32 【问题描述】:

我已经根据官方说明在 rapsbian 中安装了 docker(即运行 curl -sSL https://get.docker.com | sh),但我无法运行 hello-world 示例(我也尝试了其他示例但没有成功)。这是我得到的错误:

pi@raspberrypi2:~ $ docker run hello-world
standard_init_linux.go:178: exec user process caused "exec format error"

我的环境是带有 Raspbian GNU/Linux 8 (jessie) 和 Docker 版本 17.03.0-ce 的 Raspberry Pi 2 Model B,构建 60ccb22。

关于问题的任何提示或解决问题的可能方向?

非常感谢!

【问题讨论】:

【参考方案1】:

Raspberries 使用 ARM 而不是 x86_64 处理器。您只能运行为该架构创建的映像。尝试在 docker hub 上搜索 ARM 或 ARMv7。我知道有一个Debian ARM 图像,但肯定还有其他图像。

根本问题是 ARM 使用的二进制格式与 x86_64 不兼容,这是大多数桌面和服务器系统使用的架构。

【讨论】:

你是对的,谢谢!在这个链接 (hub.docker.com/u/armhf) 中有一些有用的官方(目前处于实验阶段)ARM 架构的图像,包括hello-world 示例。 截至 2019 年 11 月,Docker 拥有可同时构建多个架构的设施:mirailabs.io/blog/multiarch-docker-with-buildx【参考方案2】:

添加到文件的开头:

#!/bin/bash 

对我有用

【讨论】:

@Kairat Koibagarov 添加到文件开头是什么意思...什么文件? 您可能已将脚本文件作为 CMD 放入您的 dockerfile 中。如果是这样,你可以在这个脚本文件的开头添加这个来告诉你的系统如何读取它(这里是一个shell脚本)

以上是关于Raspberry-pi docker 错误:standard_init_linux.go:178:exec 用户进程导致“exec 格式错误”的主要内容,如果未能解决你的问题,请参考以下文章

sh 更新youtube-dl #tags:raspberry-pi

样式表元素适用于 Windows,但不适用于 raspberry-pi

构建GCC作为Raspberry-Pi的交叉编译器

构建GCC作为Raspberry-Pi的交叉编译器

WebDriverException:消息:使用 ChromeDriver 和 Selenium 在 Raspberry-Pi 上意外退出服务 /usr/lib/chromium-browser/ch

映射到列表错误:系列对象不可调用