Search code examples
linuxdockerx11sandboxvnc

Can you run GUI applications in a Linux Docker container?


How can you run GUI applications in a Linux Docker container?

Are there any images that set up vncserver or something so that you can - for example - add an extra speedbump sandbox around say Firefox?


Solution

  • You can simply install a vncserver along with Firefox :)

    I pushed an image, vnc/firefox, here: docker pull creack/firefox-vnc

    The image has been made with this Dockerfile:

    # Firefox over VNC
    #
    # VERSION               0.1
    # DOCKER-VERSION        0.2
    
    FROM    ubuntu:14.04
    # Make sure the package repository is up to date
    RUN     apt-get update
    
    # Install vnc, xvfb in order to create a 'fake' display and firefox
    RUN     apt-get install -y x11vnc xvfb firefox
    RUN     mkdir ~/.vnc
    # Setup a password
    RUN     x11vnc -storepasswd 1234 ~/.vnc/passwd
    # Autostart firefox (might not be the best way to do it, but it does the trick)
    RUN     bash -c 'echo "firefox" >> /.bashrc'
    

    This will create a Docker container running VNC with the password 1234:

    For Docker version 18 or newer:

    docker run -p 5900:5900 -e HOME=/ creack/firefox-vnc x11vnc -forever -usepw -create
    

    For Docker version 1.3 or newer:

    docker run -p 5900 -e HOME=/ creack/firefox-vnc x11vnc -forever -usepw -create
    

    For Docker before version 1.3:

    docker run -p 5900 creack/firefox-vnc x11vnc -forever -usepw -create