首页 > 解决方案 > 构建 Dockerfile 使用非零代码 139 执行

问题描述

描述/复制步骤

我正在尝试在我的 Raspberry Pi 1 上的 docker 容器中运行 opc-ua 服务器示例“server_ctt”(使用此处的 open62541 库),但我无法创建 docker 映像。

我按照这里的说明首先克隆了 repo。之后,我尝试通过在 open62541 目录中执行以下命令来构建镜像: docker build -f docker/Dockerfile .

这是我在终端中得到的输出:

pi@raspberrypi:~/ma/dockerVersion/open62541 $ docker build -f docker/Dockerfile                         .
Sending build context to Docker daemon  38.69MB
Step 1/18 : FROM alpine:3.10
3.10: Pulling from library/alpine
4e972d957a60: Pull complete
Digest: sha256:7c3773f7bcc969f03f8f653910001d99a9d324b4b9caa008846ad2c3089f5a5f
Status: Downloaded newer image for alpine:3.10
 ---> cf7ea1e5a972
Step 2/18 : RUN apk add --no-cache cmake gcc git g++ musl-dev mbedtls-dev python py-pip make && rm -rf /var/cache/apk/*
 ---> Running in 82c8b5868509
The command '/bin/sh -c apk add --no-cache cmake gcc git g++ musl-dev mbedtls-dev python py-pip make && rm -rf /var/cache/apk/*' returned a non-zero code: 139

事先,我已经在我的树莓派上安装了 docker 使用这里的便利脚本

关于如何解决这个问题的任何建议?

背景资料

我通过 PuTTy 连接到我的树莓派。但我想这并没有什么不同。此外,在 Windows 上构建映像并运行 server_ctt 示例完全可以正常工作。

编辑:

在我的 Windows 电脑上构建/运行 open62541 图像时,我尝试将其保存并复制到我的树莓派 1。我的树莓派上的 docker load 命令运行良好,运行图像输出如下错误:

standard_init_linux.go:211: exec user process caused "exec format error"

这可能是由于不同的架构(因为树莓派 1 使用 ARM 架构)。我该如何解决这个问题?

标签: dockerbuildraspberry-pidockerfileopen62541

解决方案


要回答更新的问题:您可以使用实验docker buildx命令为您的 Raspberry Pi 构建。

这将创建一些虚拟化构建器,它们将为所需的架构构建容器。因此,构建过程可能需要更长的时间(我认为 10 倍对我的项目来说是现实的)。

对于您的案例,最重要的命令将类似于

docker buildx build --platform linux/arm/v7 .

推荐阅读