Inside a Docker Container: "Error: cannot open display: localhost:11.0"
Inside a Docker Container: "Error: cannot open display: localhost:11.0"
我正在尝试通过 ssh 在 docker 容器中使用带有图形界面的程序。
目前我在外部机器上通过 ssh 连接,其中 docker 和容器是 运行。在主机上,我可以启动正确显示的 firefox 等程序。连接建立于:
ssh -Y root@host
当我在 docker 容器中尝试使用 firefox
图像(见下文)时:
docker run -it --privileged --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /root/.Xauthority:/root/.Xauthority:rw \
firefox
我刚刚得到:
Error: cannot open display: localhost:11.0
我已经尝试在主机上设置 xhost +
,但仍然无法正常工作。
主机运行 Scientific Linux release 7.2
并且 docker 图像是使用
Dockerfile 来自 http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y firefox
# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
将 --net=host
添加到 docker run
解决了问题。
我正在尝试通过 ssh 在 docker 容器中使用带有图形界面的程序。
目前我在外部机器上通过 ssh 连接,其中 docker 和容器是 运行。在主机上,我可以启动正确显示的 firefox 等程序。连接建立于:
ssh -Y root@host
当我在 docker 容器中尝试使用 firefox
图像(见下文)时:
docker run -it --privileged --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /root/.Xauthority:/root/.Xauthority:rw \
firefox
我刚刚得到:
Error: cannot open display: localhost:11.0
我已经尝试在主机上设置 xhost +
,但仍然无法正常工作。
主机运行 Scientific Linux release 7.2
并且 docker 图像是使用
Dockerfile 来自 http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y firefox
# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
将 --net=host
添加到 docker run
解决了问题。