docker - 构建 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 架构)。我该如何解决这个问题?
解决方案
要回答更新的问题:您可以使用实验docker buildx
命令为您的 Raspberry Pi 构建。
这将创建一些虚拟化构建器,它们将为所需的架构构建容器。因此,构建过程可能需要更长的时间(我认为 10 倍对我的项目来说是现实的)。
对于您的案例,最重要的命令将类似于
docker buildx build --platform linux/arm/v7 .
推荐阅读
- reactjs - 在生产模式下使用 Router 的 basename 属性时,路由无效
- c - arr[] 作为参数是 C 中的指针吗?
- azure - 如何删除面部 api 中不再需要的人员组名?
- java - 如何在项目的 makefile 中指定任何类的路径?
- batch-file - 使用脚本登录 idrive
- angular - 为什么在angular 2的构造函数中编写初始化逻辑不是一个好习惯
- excel - 来自用户窗体的列表框值间歇性地不更新单元格
- java - Simple Java App 适用于 Ant 但不适用于 Maven。我该怎么做才能纠正这个问题?
- javascript - 如何使用 JQuery 在 html 页面中显示 JSON 输出?
- javascript - 使用 reduce 函数在学生数组对象中找到最聪明的学生