我试图使用X11转发在docker容器中运行一个GUI应用程序,即使在绑定Xauthority文件时也无法让它工作。
# Dockerfile
FROM alpine
RUN apk --no-cache add xterm
RUN adduser --disabled-password --home /home/user --uid 1000 --gecos 'USER' user
WORKDIR /home/user
USER user
CMD /usr/bin/xterm我尝试过运行以下命令,但没有一条成功:
docker run -it --rm -e DISPLAY image
docker run -it --rm -e DISPLAY -v /tmp/.X11-unix image
docker run -it --rm -e DISPLAY -e XAUTHORITY -v $XAUTHORITY image
docker run -it --rm -e DISPLAY -e XAUTHORITY -v $XAUTHORITY -v /tmp/.X11-unix image
docker run -it --rm --net=host --privileged -e DISPLAY -e XAUTHORITY -v $XAUTHORITY -v /tmp/.X11-unix image基本上,它们都产生相同的错误Can't open display: :0。至此,我已经用完了在StackOverflow和其他教程中讨论的所有选项。
我不确定Xauthority文件上的权限是否重要,但是当我从容器内部绑定时,它具有root:root权限,其中主机具有user:user权限。
我也使用过(Can you run GUI applications in a Docker container?),但在答案方面没有任何成功。
发布于 2022-01-04 19:46:32
您是否在运行容器之前尝试过xhost + (因此本地X服务器将接受来自容器的连接)?您仍然需要设置显示等,如下所示:
docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e "DISPLAY=unix:0.0" --device /dev/dri --privileged -it --rm yourapp
注意:xhost +允许来自任何地方的X连接,所以要小心!
https://stackoverflow.com/questions/58906272
复制相似问题