通过 Docker - X11 - "Unable to init server" 的 GUI 应用程序
GUI application via Docker - X11 - "Unable to init server"
我正在尝试 运行 Debian docker 映像中的 Firefox,但无法连接到 X11 服务器。
我正在使用 here 中描述的方法,但将基本映像更改为最新的 Debian。我还更改了用户创建方法。
Dockerfile
FROM debian:latest
RUN apt-get update && apt-get install -y firefox-esr
RUN useradd --shell /bin/bash --create-home developer && \
usermod -aG sudo developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
构建容器
docker build -t firefox .
启动容器的命令
docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
firefox
错误
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
操作系统
OpenSUSE Leap 15.2
上下文
我正在执行上述操作以了解如何通过 docker 运行 GUI 应用程序。目的是 运行 最新版本的 FreeCAD (v19),目前在 OpenSUSE 上已损坏。
docker run --rm \
--net=host \
--env="DISPLAY" \
--volume="$HOME/.Xauthority:/home/developer/.Xauthority:rw" \
firefox
这应该适用于您的 Dockerfile!
两点
- .Xauthority 文件也需要共享,因为它包含 X 服务器的 cookie 和身份验证会话。因此它也必须是 read/write。
- 如果你不想做
--net=host
那么你可以监听绑定到 unix 套接字的 TCP 端口并将其转发到容器。
我正在尝试 运行 Debian docker 映像中的 Firefox,但无法连接到 X11 服务器。
我正在使用 here 中描述的方法,但将基本映像更改为最新的 Debian。我还更改了用户创建方法。
Dockerfile
FROM debian:latest
RUN apt-get update && apt-get install -y firefox-esr
RUN useradd --shell /bin/bash --create-home developer && \
usermod -aG sudo developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
构建容器
docker build -t firefox .
启动容器的命令
docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
firefox
错误
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
操作系统
OpenSUSE Leap 15.2
上下文
我正在执行上述操作以了解如何通过 docker 运行 GUI 应用程序。目的是 运行 最新版本的 FreeCAD (v19),目前在 OpenSUSE 上已损坏。
docker run --rm \
--net=host \
--env="DISPLAY" \
--volume="$HOME/.Xauthority:/home/developer/.Xauthority:rw" \
firefox
这应该适用于您的 Dockerfile!
两点
- .Xauthority 文件也需要共享,因为它包含 X 服务器的 cookie 和身份验证会话。因此它也必须是 read/write。
- 如果你不想做
--net=host
那么你可以监听绑定到 unix 套接字的 TCP 端口并将其转发到容器。