我正在尝试显示在 Docker 容器中运行但通过 unix 套接字连接到主机的 X11 服务器的基本 Tauri 应用程序 GUI。但是我在运行时收到以下警告和错误
npm run tauri dev
:
(WebKitWebProcess:6009): Gdk-ERROR **: 00:17:37.147: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
(Details: serial 258 error_code 2 request_code 152 (GLX) minor_code 34)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
我在主机上打开了一个 GUI 窗口,但它是空白的(但应该包含一些文本/HTML 标记)。
因为我能够从容器中运行 Firefox 和 Gedit 而不是 gnome 终端,我认为这是一些权限问题或者缺少一些包来让基于 Webkit 的 GUI 窗口连接到我主机的 X 服务器。
$DISPLAY
和 /tmp/.X11-unix
设置正确。在主机上我设置了xhost +
容器以
node
用户身份运行。货物安装在/home/node/.cargo/bin
。 /home/node
由 root:node
拥有,对文件夹具有 775
权限,对文件具有 664
权限(+x
对可执行脚本)。
我刚刚开始使用 Rust 和 Tauri,也不是 X 服务器和 Docker 网络方面的大专家。
任何想法如何让它工作?
我最终使用 Qemu + Virt-Manager 而不是 docker。对于初学者,我使用了一个 Ubuntu 模板,因为剪贴板共享开箱即用,我的主机也在 Ubuntu 上运行。声音共享和视频播放也开箱即用。如果我遇到每个应用程序都需要一个单独的 VM 的情况,那么我会使用我的极简主义 Arch 模板来启动 VM - 大小应该非常接近 docker 容器的大小。
编辑: 有人告诉我,LXC/LXD 和 Podman 可能是更好的选择。
尝试在您的 docker 命令或 docker-compose.yml 文件中添加
ipc = "host"
。这为我解决了问题,尽管我还有其他错误代码。