standard_init_linux.go:211:exec 用户进程导致 alpine linux 和 python“没有这样的文件或目录”

2023-12-06

我有一个目录,其中包含 docker 文件、attack.py 和requirements.txt。

使用它,我创建了以下 dockerfile:

FROM arm64v8/python:3.7-alpine

COPY qemu-arm-static /usr/bin

COPY ./ app-ids
WORKDIR /app-ids

RUN pip install --no-cache-dir -r requirements.txt

CMD["python","./attack.py"]

但是,pip install 行会抛出: standard_init_linux.go:211:exec 用户进程导致“没有这样的文件或目录”

我不明白为什么。使用 ls、pwd 等命令尝试调试此问题会产生相同的错误。

谁能解释一下我到底做错了什么?


我猜你正在尝试在非arm64v8平台上构建docker镜像。对于其余的答案,我会假设这一点。

提供的解决方案将特定于 Ubuntu 发行版(主机),但我想它在其他 Linux 发行版上应该类似。

解决方案1[在 Ubuntu 18.04 上工作]

From https://github.com/docker/for-linux/issues/56我们可以看到 Debian(以及 Ubuntu?)的软件包中当前存在错误。

sudo apt-get install qemu-user-static

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

这将删除qemu-user-binfmt解决方案 2 中的方法。但是,在该包中,提供的配置文件不在文件夹中,并且配置错误,无法使用systemd-binfmt.

此外,我们从 git 存储库获取配置文件,并将它们放在 systemd-binfmt 查找的文件夹中:/lib/binfmt.d/ (not /var/lib/binfmts/由 qemu-user-static 安装)

然后检查状态:

systemctl status systemd-binfmt

并尝试再次编译你的docker。它应该有效!

解决方案2[目前不适用于 Ubuntu 18.04]

以前是手动配置过程,但现在通过 apt 包支持:

sudo apt-get install qemu-user-binfmt

这样它将创建binfmt以下所有平台的配置/proc/sys/fs/binfmt_misc/qemu-*。当你的系统检测到可执行文件是针对arm的时,它会调用qemu而不是尝试直接执行。

这是更详细解释的链接:https://ownyourbits.com/2018/06/13/transparently-running-binaries-from-any-architecture-in-linux-with-qemu-and-binfmt_misc/ or https://ownyourbits.com/2018/06/27/running-and-building-arm-docker-containers-in-x86/

要理解它是如何工作的,最好阅读以下段落:

内核识别ARM ELF魔法,并使用解释器/usr/bin/qemu-arm-static,这是正确的 QEMU 二进制文件 建筑学。 0x7F 'ELF' 的十六进制是7f 45 4c 46, 所以我们可以 看看魔法和面具如何一起工作,考虑到 ELF头的结构

typedef struct {
    unsigned char e_ident[EI_NIDENT];   /* 0x7F 'ELF' four byte ELF magic for any architecture */
    uint16_t e_type;
    uint16_t e_machine;                 /* architecture code, 40=0x28 in the case of ARM */
    uint32_t e_version;
    ElfN_Addr e_entry;
    ElfN_Off e_phoff;
    ElfN_Off e_shoff;
    uint32_t e_flags;
    uint16_t e_ehsize;
    uint16_t e_phentsize;
    uint16_t e_phnum;
    uint16_t e_shentsize;
    uint16_t e_shnum;
    uint16_t e_shstrndx;
} ElfN_Ehdr;

请注意,binfmt配置由 docker 共享,因此它将尝试获取/usr/bin/qemu-arm-static容器内。这就是您仍然需要复制 /usr/bin/qemu-arm-static 的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

standard_init_linux.go:211:exec 用户进程导致 alpine linux 和 python“没有这样的文件或目录” 的相关文章

  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 我可以更改 Windows Docker 容器中的日期和时间吗?

    我正在尝试测试一个在特定时间段内导出文件的软件 我想到使用 docker 容器来提供所需的时间而不是使用系统时间 问题是我缺乏更改容器时间的权限 并出现以下错误消息 PS C usr src app gt Set Date Date Get
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • Docker Compose 无法连接到数据库

    我使用 Nestjs 作为后端 并使用 typeorm 作为 ORM 我尝试在 docker compose 文件中定义我的数据库和应用程序 如果我将数据库作为容器运行 并从本地计算机运行应用程序 那么它运行良好 我的程序连接并创建表等 但
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • Django admin 保存对象的副本而不是覆盖

    我有一个名为 OneToOneFiled 的模型alg id 当我进入管理面板并更改现有对象中的此字段时 就会创建一个新对象 但我想用不同的对象覆盖相同的对象alg id 当我更改其他简单文本字段时 一切正常 如果我改变alg id对于一个
  • StringIndexOutOfBoundsException 字符串索引超出范围:0 [重复]

    这个问题在这里已经有答案了 我正在编写一个程序 打开一个文本文件并检查注释 然后它解析评论以检查某些单词 我遇到的错误是以下 while 循环 该循环检查当前行是否 如果存在非反斜杠字符 则以空格或 以外的任何字符开头 然后 while 循
  • KarateException 路径中缺少属性 - JSON

    我试图匹配响应中的特定变量并尝试如下 但我收到错误消息KarateException Missing Property in path Odata 我的问题是 我们如何修改才能避免出现此错误 Feature And match email
  • 如何使用 c#.net 4.0 在最大定义的并行线程中运行任务

    我有 1 个方法 我想在 10 个不同的并行线程中运行 所有方法都是独立的 彼此之间没有依赖关系 我的问题是 如果我有 100 个项目要处理并且想一次处理 10 个 那么如何做一次运行 10 次 我创建了一个示例代码 我正在使用Parall
  • URL 重写 - 初学者指南

    我需要学习如何对网站进行 URL 重写以获得漂亮的 URL 通过阅读 50 篇教程 我对它的工作原理有了一个大概的了解 但他们都没有真正发挥作用 也从未设法使其正常工作 您知道有哪些适合我入门的教程吗 这是我想如何使用它的示例 这是基本链接
  • 如何使用Dompdf转换多个html文件?

    我在做什么 我正在使用一个名为的 PHP 库Dompdf将我的 HTML 文件转换为 PDF 我已成功将单个 HTML 文件转换为 PDF 我正在尝试做的事情 现在我有多个报告 我想将它们转换为 PDF 文件 我在做什么 我在这里有一个示例
  • 为什么扫描仪会跳过用户的输入

    我有一个小任务 允许用户输入任何国家的地区及其邻居 我做了所有的事情 只是有一个小问题 那就是当我运行我的代码时 程序要求用户输入区域的数量 如果用户输入 13 或数字大于 10 系统会认为该数字就像两个输入 它不会允许用户为第二个问题输入
  • iOS 11 Safari 引导模式文本区域位于光标之外

    在 iOS 11 safari 中 输入文本框光标位于输入文本框之外 我们不明白为什么会出现这个问题 正如您所看到的 我的焦点文本框是电子邮件文本输入 但我的光标位于其中 这只发生在 iOS 11 Safari 上 我通过添加解决了这个问题
  • 找不到 pandas==1.3.1 的匹配发行版

    我目前拥有版本 1 1 5 的 Pandas 我正在尝试使用以下命令安装最新版本的 Pandas pip install pandas 1 3 1 但是 我收到如下错误 ERROR Could not find a version that
  • 无法在 Eclipse 中加载 Maven 项目中的 Widgetsets

    我使用 maven 创建了一个 vaadin Web 应用程序eclipse 特别是我使用了原型vaadin archetype touchkit如中所述瓦丁之书 20 3 4 在没有对默认生成的代码进行任何更改的情况下 我已经使用带有目标
  • 如何集成 Expression> 来清理我的 Linq-to-Entity 查询?

    我想使用Expression
  • 打印时 pyodbc 弃用警告

    当我跑步时print cursor fetchone pyodbc 包 我有以下警告 main py 33 DeprecationWarning PyUnicode FromUnicode NULL size is deprecated u
  • libxml/tree.h 没有这样的文件或目录

    我收到以下错误 libxml tree h 没有这样的文件或目录 我已经添加了libxml2 dylib到我的项目 但是我遇到了这种麻烦 请帮我 遵循指示here 在 设置项目文件 下 设置您的项目文件 您需要将 libxml2 dylib
  • .htaccess 重定向域别名'

    我有一个客户 它有大量的域别名 并希望它们全部重定向到网站上的一个主域 他们还想知道哪个域别名正在执行重定向 我已经把那部分写下来了 但我想将代码优化到最好 最正确的方式 并消除我必须编写的代码量 我想知道是否有办法将所使用的域别名传递给
  • qt.qpa.xcb:无法连接显示 qt.qpa.plugin:无法加载 Qt 平台插件“xcb”

    运行下面的代码后 我收到以下错误 Got keys from plugin meta data xcb QFactoryLoader QFactoryLoader checking directory path usr bin platfo
  • Windows 8 商店应用程序是否支持 MS Access 数据库?

    我刚刚开始学习 Windows 8 应用商店应用程序编程 并遇到了一个问题 Windows 8 应用商店应用程序是否支持 MS Access 数据库 如果不是那么它支持哪些数据库 根据您对支持的定义 您可以创建一个 WCF 服务 允许您从
  • 如何获取当前正在执行的 javascript 代码的文件路径

    我正在尝试做类似 C 的事情 include filename c 或PHPinclude dirname FILE filename php 但在 JavaScript 中 我知道如果我可以获得加载 js 文件的 URL 例如标签的 sr
  • 如何使用 .NET 创建具有特定扩展名的临时文件?

    我需要生成一个扩展名为 csv 的唯一临时文件 我现在做的是 string filepath System IO Path GetTempFileName Replace tmp csv 但是 这并不能保证我的 csv 文件是唯一的 我知道
  • 定义我自己的命令

    我正在尝试在 MacVim 中定义自己的命令 将 c 语句或语句范围转换为注释 所以我把它放在我的 vimrc 中 command range Com
  • standard_init_linux.go:211:exec 用户进程导致 alpine linux 和 python“没有这样的文件或目录”

    我有一个目录 其中包含 docker 文件 attack py 和requirements txt 使用它 我创建了以下 dockerfile FROM arm64v8 python 3 7 alpine COPY qemu arm sta