You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内执行AppImage时出现ENOENT错误的排查求助

问题:Docker容器内使用--appimage-extract-and-run运行AppImage失败

尝试在Docker容器内用--appimage-extract-and-run参数运行AppImage时,报错bash: ./prog.AppImage: No such file or directory,但:

  • 同一机器的容器外可正常提取并运行该AppImage
  • 另一机器的容器内也可正常提取并运行该AppImage

已确定问题出在第一台机器,但不知如何诊断。

容器内执行的调试命令及输出

1. 查看AppImage文件信息

$ file prog.AppImage
prog.AppImage: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, stripped

2. 检查动态链接器路径

$ ls -al /lib64/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root root 42 May  6 20:34 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

3. 确认系统架构

$ uname -p
x86_64

4. strace追踪执行过程

$ strace ./prog.appimage --appimage-extract-and-run
execve("./prog.AppImage", ["./prog.AppImage", "--appimage-extract-and-run"], 0x7ffdf35c58f8 /* 8 vars */) = -1 ENOENT (No such file or directory)
strace: exec: No such file or directory
+++ exited with 1 +++

5. 检查动态依赖

$ ldd prog.AppImage 
        not a dynamic executable

无法提供实际使用的AppImage,但可通过Subsurface AppImage复现该问题。

使用的Dockerfile

# # # # #
# 此镜像将在流水线中构建,用于执行E2E测试。
from ubuntu:22.04

run apt update && apt install -y curl build-essential
run curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
    && apt-get install -y nodejs
run npm install -g yarn
# xvfb允许图形应用在无需连接真实显示器的容器中运行。
run apt install -y xvfb
# 运行chromedriver所需依赖
run apt install -y libglib2.0-0 libnss3
# 运行chromium所需依赖
run apt update
run apt install -y libatk-bridge2.0-0 libcups2 libgtk-3-0 libgbm1 libasound2
# lithos运行所需依赖
run apt install -y policykit-1 sudo
run mkdir -p /etc/udev/rules.d
run mkdir --mode=777 /data

# Electron不喜欢以root身份运行,因此创建普通用户。
# pkexec在Docker中运行异常,因此通过允许用户无密码sudo并创建指向sudo的pkexec链接来模拟。
run adduser --disabled-password --gecos "" testautomation \
 && usermod -aG sudo testautomation \
 && echo "testautomation ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
 && rm /usr/bin/pkexec \
 && ln -s /usr/bin/sudo /usr/bin/pkexec
user testautomation
workdir /home/testautomation

# 空入口点允许GitlabCI启动容器并发送作业脚本。
entrypoint [""]

内容的提问来源于stack exchange,提问作者Will Alley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:14:53