Skip to content
A docker image that supports rendering graphical applications.
Shell Python Makefile
Branch: master
Clone or download
jcfr Merge pull request #21 from thewtex/circleci-tweak-image-caching
ci: Prevent unneeded rebuild adding "debian:jessie" to the cache
Latest commit 38b3275 Jun 4, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci ci: Prevent unneeded rebuild adding "debian:jessie" to the cache Jun 4, 2018
example Use the Makefile to build the example Oct 20, 2016
usr/bin Update graphical-app-launcher to allow continuous update of "graphica… May 12, 2017
Dockerfile Fix "cannot import name 'IncompleteRead'" reported when building the … May 12, 2017
LICENSE Initial commit. Oct 28, 2015
Makefile ENH: Add MicroBadger Label Schema Oct 24, 2016
README.rst ENH: Use MicroBadger in README file Oct 24, 2016 Use bash instead of sh. Apr 9, 2016



A docker image that supports rendering graphical applications, including OpenGL apps.


This Docker image supports portable, CPU-based graphical application rendering, including rendering OpenGL-based applications. An X session is running on display :0 and can be viewed through HTML5 viewer on any device with a modern web browser (Mac OSX, Windows, Linux, Android, iOS, ChromeOS, ...). It can be used to expose a graphical interface from a Docker container or to run continuous integration tests that require a graphical environment.


Execute the script.


By default, the start up the graphical session and points the user to a URL on the local host where they can view and interact with the session. On application exit, the will print the application's console output and exit with the application's return code.

The session runs Openbox as a non-root user, user that has password-less sudo privileges. The browser view is an HTML5 viewer that talks over websockets to a VNC Server. The VNC Server displays a running Xdummy session.

To customize the Docker image for your graphical application, set the APP environmental variable to the shell command required to start the application. For example:

ENV APP /usr/bin/my-gui-app

The script can be used to drive start-up. It is customizable with flags:

Usage: [-h] [-q] [-c CONTAINER] [-i IMAGE] [-p PORT] [-r DOCKER_RUN_FLAGS]

This script is a convenience script to run Docker images based on
thewtex/opengl. It:

- Makes sure docker is available
- On Windows and Mac OSX, creates a docker machine if required
- Informs the user of the URL to access the container with a web browser
- Stops and removes containers from previous runs to avoid conflicts
- Mounts the present working directory to /home/user/work on Linux and Mac OSX
- Prints out the graphical app output log following execution
- Exits with the same return code as the graphical app


  -h             Display this help and exit.
  -c             Container name to use (default opengl).
  -i             Image name (default thewtex/opengl).
  -p             Port to expose HTTP server (default 6080). If an empty
                 string, the port is not exposed.
  -r             Extra arguments to pass to 'docker run'. E.g.
  -q             Do not output informational messages.

See the example directory for a derived image and script that runs the glxgears OpenGL demo program.


This configuration was largely inspired by the dit4c project.

You can’t perform that action at this time.