jlesage/baseimage-gui

Sponsored OSS

By jlesage

Updated 3 days ago

A minimal docker baseimage to ease creation of X graphical application containers

Image
116

500K+

jlesage/baseimage-gui repository overview

A minimal docker baseimage to ease creation of X graphical application containers

Release Build Status Donate

This Docker baseimage simplifies creating containers to run any X graphical application on a headless server. The application's full graphical interface directly from any modern web browser - no downloads, installs, or setup required on the client side - or connect with any VNC client.

The web interface also offers audio playback, seamless clipboard sharing, an integrated file manager and terminal for accessing the container's files and shell, desktop notifications, and more.

Images

This baseimage is available for multiple Linux distributions:

Base DistributionDocker Image Base TagSize
Alpine 3.16alpine-3.16
Alpine 3.17alpine-3.17
Alpine 3.18alpine-3.18
Alpine 3.19alpine-3.19
Alpine 3.20alpine-3.20
Alpine 3.21alpine-3.21
Alpine 3.22alpine-3.22
Debian 10debian-10
Debian 11debian-11
Ubuntu 16.04 LTSubuntu-16.04
Ubuntu 18.04 LTSubuntu-18.04
Ubuntu 20.04 LTSubuntu-20.04
Ubuntu 22.04 LTSubuntu-22.04

Docker image tags follow this structure:

TagDescription
distro-vX.Y.ZExact version of the image.
distro-vX.YLatest version of a specific minor version of the image.
distro-vXLatest version of a specific major version of the image.

View all available tags on Docker Hub or check the Releases page for version details.

Versioning

Images adhere to semantic versioning. The version format is MAJOR.MINOR.PATCH, where an increment in the:

  • MAJOR version indicates a backward-incompatible change.
  • MINOR version indicates functionality added in a backward-compatible manner.
  • PATCH version indicates a bug fix in a backward-compatible manner.
Content

The baseimage includes the following key components:

  • An initialization system for container startup.
  • A process supervisor with proper PID 1 functionality (e.g., process reaping).
  • TigerVNC, an X server with an integrated VNC server.
  • Openbox, a lightweight window manager.
  • noVNC, an HTML5 VNC client.
  • NGINX, a high-performance HTTP server.
  • Tools to simplify container creation.
  • An environment optimized for Dockerized applications.

Getting started

Creating a Docker container for an application using this baseimage is straightforward. You need at least three components in your Dockerfile:

  • Instructions to install the application and its dependencies.
  • A script to start the application, stored at /startapp.sh in the container.
  • The name of the application.

Below is an example of a Dockerfile and startapp.sh for running the xterm terminal:

Dockerfile:

# Pull the baseimage.
FROM jlesage/baseimage-gui:alpine-3.19-v4

# Install xterm.
RUN add-pkg xterm

# Copy the start script.
COPY startapp.sh /startapp.sh

# Set the application name.
RUN set-cont-env APP_NAME "Xterm"

startapp.sh:

#!/bin/sh
exec /usr/bin/xterm

Make the script executable:

chmod +x startapp.sh

Build the Docker image:

docker build -t docker-xterm .

Run the container, mapping ports for web and VNC access:

docker run --rm -p 5800:5800 -p 5900:5900 docker-xterm

Access the GUI via a web browser at:

http://<HOST_IP_ADDR>:5800

Documentation

Full documentation is available at https://github.com/jlesage/docker-baseimage-gui.

Tag summary

Content type

Image

Digest

sha256:0df945975

Size

65.8 MB

Last updated

3 days ago

docker pull jlesage/baseimage-gui:alpine-3.23-v4

This week's pulls

Pulls:

3,944

Last week