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
相关产品推荐
相关产品推荐

