【发布时间】:2019-11-17 23:38:58
【问题描述】:
我正在尝试使用 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?) 但没有任何成功的答案
【问题讨论】:
-
查看this 发布的 GUI 部分。开发人员是|曾在 Docker 工作,并且支持展示如何在 Docker 下运行几乎所有东西。 HTH!
-
我也使用过这些图片,但我也遇到了同样的问题。我使用了 UNIX 套接字并将显示变量设置为 unix:0,但我仍然得到同样的错误
-
啊,我没主意了,抱歉。
-
我尝试在主机上为 XAUTHORITY 文件添加 755 权限并且能够连接,但这需要 --privileged 标签。你有什么建议不需要 --privileged
标签: docker x11 x11-forwarding