Inside a Docker Container: "Error: cannot open display: localhost:11.0"
Asked Answered
F

1

6

I am trying to use programs with a graphical interface in a docker container over ssh.

Currently I am connected over ssh on an external machine where docker and the containers are running. On the host I can start programs like firefox which was displayed correctly. The connection is established with:

ssh -Y root@host

When I try the same in a docker container, with the firefox image (see below):

docker run -it --privileged --rm \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /root/.Xauthority:/root/.Xauthority:rw \
    firefox

I just get:

Error: cannot open display: localhost:11.0

I already tried to set xhost + on the host, but it is still not working. The host runs Scientific Linux release 7.2 and the docker image is created with the Dockerfile from 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
Facia answered 7/7, 2016 at 15:34 Comment(0)
F
15

Adding --net=host to docker run solved the problem.

Facia answered 12/7, 2016 at 9:23 Comment(1)
still working in 2022 on Ubuntu 22.04 for me at leastIsocrates

© 2022 - 2024 — McMap. All rights reserved.