docker - 在 amd64 linux 机器上为 arm32v7 容器运行 docker build 时出错 : standard_init_linux. go:207

标签 docker dockerfile

我有一台 amd64 linux 机器,用于构建 arm32v7 容器。当docker build遇到第一个 RUN 命令,它会出错:

standard_init_linux.go:207: exec user process caused "no such file or directory"

这可以通过运行 docker run -it arm32v7/ubuntu:xenial 轻松复制,无需 docker 文件。在 amd64 linux 主机上。

我在其他地方看到过这种提示,但大多数建议是您需要在 arm32v7 主机上构建一个 arm32v7 容器。这是相当不切实际的。

我在 Ubuntu 19.04 和 18.10 上成功添加了一些架构仿真:

sudo apt-get install -y qemu qemu-user-static qemu-user binfmt-support

添加这些包后,错误消失了,我可以创建我的 arm32v7 容器。

但是,这确实 不是 适用于 Ubuntu 18.04 或 16.04。

是否有适用于任何地方的通用解决方案?

最佳答案

似乎有一些安装后步骤在 Ubuntu 18.04 和 16.04 上失败了。

以下是解决 18.04 和 16.04 问题的几种解决方法。

方法一:

git clone https://github.com/computermouth/qemu-static-conf.git
sudo mkdir -p /lib/binfmt.d
sudo cp qemu-static-conf/*.conf /lib/binfmt.d
sudo systemctl restart systemd-binfmt.service

方法二:

sudo mkdir -p /lib/binfmt.d
sudo sh -c 'echo :qemu-arm:M::\\x7fELF\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x28\\x00:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfe\\xff\\xff\\xff:/usr/bin/qemu-arm-static:F > /lib/binfmt.d/qemu-arm-static.conf'
sudo sh -c 'echo :qemu-aarch64:M::\\x7fELF\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\xb7\\x00:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfe\\xff\\xff\\xff:/usr/bin/qemu-aarch64-static:F > /lib/binfmt.d/qemu-aarch64-static.conf'
sudo systemctl restart systemd-binfmt.service

关于docker - 在 amd64 linux 机器上为 arm32v7 容器运行 docker build 时出错 : standard_init_linux. go:207,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063608/

相关文章:

docker - 在Docker容器中获取代码

docker - 在Docker中添加主机时如何修复只读错误?

node.js - 如果是 Docker,则运行单个 js 文件时出现 "internal/modules/cjs/loader"错误,镜像 Node :12. 4

php - 减小自定义 Docker 镜像大小的最佳方法

docker - 如何从 docker hub 上的私有(private) docker 存储库中提取?

jenkins - 如何在 Dockerfile 中为 LDAPS 的 Jenkins 添加 SSL 自签名证书?

docker - $GOPATH/go.mod 存在,但在构建 docker 容器时不应该存在,但如果我手动运行命令就可以工作

java - 将生成的 jar 文件的名称从 Maven pom.xml 传递到 Dockerfile

docker - Jenkins 声明性管道 : How can I mount a temporary volume associated with the workspace in a docker container?

azure - 是否可以使用 Azure Kubernetes 服务或 Azure Service Fabric 来部署和管理本地 Kubernetes 集群?