Docker: running application with a remote X-server

I currently run my application in a container together with Xvfb and X11VNC. This all works nicely and I can see the GUI via any VNC client.
However, I would like to run Xvfb and X11VNC in container A, and my application in container B.

Container A is started as e.g.
docker run -it –rm –name x11 -p 6000-6100:6000-6100 myimagewithXvfb

  • docker-compose: Service 'web' failed to build
  • Can I run a .Net web application on Dockers for windows?
  • StatusCode.UNAUTHENTICATED when running Vision API demo in Python/Flask running in Docker
  • How to build and start containers on multiple docker machines
  • How to scale application with multiple exposed ports and multiple volume mounted by using docker swarm?
  • How can I show only the allocated resources in Docker container?
  • In B I set to DISPLAY=A, to point to the X server (XVfb) in container A.

    In B I start e.g. xeyes, but I get the error:
    root@a1ec4b67e98f:/# xeyes
    Error: Can’t open display:
    root@a1ec4b67e98f:/# echo $DISPLAY

    Also using does not matter.

    Anyway, the question is how to get this to work, if possible at all ?

  • Connect Windows container to Linux container running on same Docker host
  • Host screen turns off when I start X server in docker container
  • Docker cache confusion
  • Is it possible to set the default command when the `docker exec` command is run on an already running container?
  • Authentication issue in Docker-MongoDB
  • AWS BeansTalk expose docker port
  • One Solution collect form web for “Docker: running application with a remote X-server”

    Without more information it’s hard to tell for sure, but my guess is that your problem is related to X authority. You can either allow clients to connect without access control by using the xhost command:

    A> xhost +
    B> export DISPLAY=
    B> xeyes

    A more secure way is on container A ssh to container B like this:

    A> ssh -Y B
    B> xeyes

    (Here you don’t need to manually set the DISPLAY env. variable as it’s set by SSH automatically.)

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.