Skip to content

Latest commit

 

History

History
134 lines (99 loc) · 5.86 KB

DOCKERHUB.md

File metadata and controls

134 lines (99 loc) · 5.86 KB

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

Release Build Status Donate

This is a docker baseimage that can be used to create containers able to run any X application on a headless server very easily. The application's GUI is accessed through a modern web browser (no installation or configuration needed on the client side) or via any VNC client.

Images

Multiple docker images, based on different Linux distributions, are available:

Base Distribution Docker Image Base Tag Size
Alpine 3.16 alpine-3.16
Alpine 3.17 alpine-3.17
Alpine 3.18 alpine-3.18
Alpine 3.19 alpine-3.19
Alpine 3.20 alpine-3.20
Debian 10 debian-10
Debian 11 debian-11
Ubuntu 16.04 LTS ubuntu-16.04
Ubuntu 18.04 LTS ubuntu-18.04
Ubuntu 20.04 LTS ubuntu-20.04
Ubuntu 22.04 LTS ubuntu-22.04

Content

Here are the main components of the baseimage:

  • An init system.
  • A process supervisor, with proper PID 1 functionality (proper reaping of processes).
  • TigerVNC, a X server with an integrated VNC server.
  • Openbox, a window manager.
  • noVNC, a HTML5 VNC client.
  • NGINX, a high-performance HTTP server.
  • Useful tools to ease container building.
  • Environment to better support dockerized applications.

Versioning

Images are versioned. Version number follows the semantic versioning. The version format is MAJOR.MINOR.PATCH, where an increment of the:

  • MAJOR version indicates that a backwards-incompatible change has been done.
  • MINOR version indicates that functionality has been added in a backwards-compatible manner.
  • PATCH version indicates that a bug fix has been done in a backwards-compatible manner.

Tags

The baseimage is available under multiple tags. A tag is made from the corresponding Linux distribution and the release version.

Tag Description
distro-vX.Y.Z Exact version of the image.
distro-vX.Y Latest version of a specific minor version of the image.
distro-vX Latest version of a specific major version of the image.

Getting started

The Dockerfile for your application can be very simple, as only three things are required:

  • Instructions to install the application.
  • A script that starts the application (stored at /startapp.sh in container).
  • The name of the application.

Here is an example of a docker file that would be used to run the xterm terminal.

In Dockerfile:

# Pull base image.
FROM jlesage/baseimage-gui:alpine-3.15-v4

# Install xterm.
RUN add-pkg xterm

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

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

In startapp.sh:

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

Then, build your docker image:

docker build -t docker-xterm .

And run it:

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

You should be able to access the xterm GUI by opening in a web browser:

http://[HOST IP ADDR]:5800

Documentation

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