• Stars
    star
    1,524
  • Rank 30,745 (Top 0.7 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Collection of Docker images with headless VNC environments

Docker container images with "headless" VNC session

This repository contains a collection of Docker images with headless VNC environments.

Each Docker image is installed with the following components:

  • Desktop environment Xfce4 or IceWM
  • VNC-Server (default VNC port 5901)
  • noVNC - HTML5 VNC client (default http port 6901)
  • Browsers:
    • Mozilla Firefox
    • Chromium

Docker VNC Desktop access via HTML page

Build Status

Build Status MASTER

Current provided OS & UI sessions:

  • consol/rocky-xfce-vnc: Rocky 9 with Xfce4 UI session
  • consol/debian-xfce-vnc: Debian 11 with Xfce4 UI session
  • consol/rocky-icewm-vnc: Rocky 9 with IceWM UI session
  • consol/debian-icewm-vnc: Debian 11 with IceWM UI session

OpenShift / Kubernetes

It's also possible to run the images in container orchestration platforms like Kubernetes or OpenShift. For more information how to deploy containers in the cluster, take a look at:

Usage

Usage is similar for all provided images, e.g. for consol/rocky-xfce-vnc:

  • Print out help page:

    docker run consol/rocky-xfce-vnc --help
    
  • Run command with mapping to local port 5901 (vnc protocol) and 6901 (vnc web access):

    docker run -d -p 5901:5901 -p 6901:6901 consol/rocky-xfce-vnc
    
  • Change the default user and group within a container to your own with adding --user $(id -u):$(id -g):

    docker run -d -p 5901:5901 -p 6901:6901 --user $(id -u):$(id -g) consol/rocky-xfce-vnc
    
  • If you want to get into the container use interactive mode -it and bash

    docker run -it -p 5901:5901 -p 6901:6901 consol/rocky-xfce-vnc bash
    
  • Build an image from scratch:

    docker build -t consol/rocky-xfce-vnc rocky-xfce-vnc
    

Connect & Control

If the container is started like mentioned above, connect via one of these options:

Hints

1) Extend a Image with your own software

Since version 1.1.0 all images run as non-root user per default, so if you want to extend the image and install software, you have to switch back to the root user:

## Custom Dockerfile
FROM consol/rocky-xfce-vnc
ENV REFRESHED_AT 2022-10-12

# Switch to root user to install additional software
USER 0

## Install a gedit
RUN yum install -y gedit \
    && yum clean all

## switch back to default user
USER 1000

2) Change User of running VNC Container

Per default, since version 1.3.0 all container processes will be executed with user id 1000. You can change the user id as follows:

2.1) Using root (user id 0)

Add the --user flag to your docker run command:

docker run -it --user 0 -p 6911:6901 consol/rocky-xfce-vnc

2.2) Using user and group id of host system

Add the --user flag to your docker run command:

docker run -it -p 6911:6901 --user $(id -u):$(id -g) consol/rocky-xfce-vnc

3) Override VNC environment variables

The following VNC environment variables can be overwritten at the docker run phase to customize your desktop environment inside the container:

  • VNC_COL_DEPTH, default: 24
  • VNC_RESOLUTION, default: 1280x1024
  • VNC_PW, default: my-pw
  • VNC_PASSWORDLESS, default: <not set>

3.1) Example: Override the VNC password

Simply overwrite the value of the environment variable VNC_PW. For example in the docker run command:

docker run -it -p 5901:5901 -p 6901:6901 -e VNC_PW=my-pw consol/rocky-xfce-vnc

3.2) Example: Override the VNC resolution

Simply overwrite the value of the environment variable VNC_RESOLUTION. For example in the docker run command:

docker run -it -p 5901:5901 -p 6901:6901 -e VNC_RESOLUTION=800x600 consol/rocky-xfce-vnc

3.3) Example: Start passwordless

Set VNC_PASSWORDLESS to true to disable the VNC password. It is highly recommended that you put some kind of authorization mechanism before this. For example in the docker run command:

docker run -it -p 5901:5901 -p 6901:6901 -e VNC_PASSWORDLESS=true consol/rocky-xfce-vnc

4) View only VNC

Since version 1.2.0 it's possible to prevent unwanted control via VNC. Therefore you can set the environment variable VNC_VIEW_ONLY=true. If set, the startup script will create a random password for the control connection and use the value of VNC_PW for view only connection over the VNC connection.

 docker run -it -p 5901:5901 -p 6901:6901 -e VNC_VIEW_ONLY=true consol/rocky-xfce-vnc

5) Known Issues

5.1) Chromium crashes with high VNC_RESOLUTION (#53)

If you open some graphic/work intensive websites in the Docker container (especially with high resolutions e.g. 1920x1080) it can happen that Chromium crashes without any specific reason. The problem there is the too small /dev/shm size in the container. Currently there is no other way, as define this size on startup via --shm-size option, see #53 - Solution:

docker run --shm-size=256m -it -p 6901:6901 -e VNC_RESOLUTION=1920x1080 consol/rocky-xfce-vnc chromium-browser http://map.norsecorp.com/

Thx @raghavkarol for the hint!

How to release

See how-to-release.md

Contributors

At this point we want to thank all contributors, which helped to move this great project by submitting code, writing documentation, or adapting other tools to play well together with the docker headless container.

Changelog

The current changelog is provided here: changelog.md

More Repositories

1

omd

OMD - Open Monitoring Distribution Labs Edition
Shell
162
star
2

sakuli

Sakuli is an end-2-end testing and monitoring tool for web sites and common UIs with multiple monitoring integrations
Java
116
star
3

java9-modules-maven-junit-example

This simple project shows how Maven can be used to build Java 9 modules.
Java
64
star
4

omd-labs-docker

Docker images with OMD labs edition
Shell
22
star
5

appserver-images

Collection of Docker images with various Java Application Servers
Shell
20
star
6

java-caches-demo

Demo Code for JayDay 2013 Presentation "Java Caches: Ehcache, Hazelcast, Infinispan"
17
star
7

apache_mod_prometheus_status

mod_prometheus_status is a Prometheus white box exporter for Apache metrics similar to mod_status with additional request time/size metrics including custom labeling.
C
16
star
8

springboot-monitoring-example

Simple SpringBoot application with Prometheus metrics
Java
11
star
9

sakuli-examples

Example tests for Sakuli
JavaScript
8
star
10

go-neb-wrapper

write naemon neb broker modules in golang 🎉
C
7
star
11

sakuli-ui

Admin UI for Sakuli
TypeScript
7
star
12

chaos-professor

Chaos Professor is a web application that creates some chaos in the JVM.
Java
7
star
13

mod-gearman-worker-go

Mod-Gearman Worker rewrite in Golang
Go
7
star
14

sakuli-example-testautomation-day

JavaScript
5
star
15

grpc-petshop-rs

Showcasing minimalistic full-stack project using gRPC with a Rust backend and a Browser frontend.
Rust
3
star
16

check_vsphere

A check pugin for naemon/nagios/icinga to heck various stuff on ESXi Hosts and VCenter
Python
3
star
17

jugm-quarkus

Sample code for JUG Munich quarkus talk on 2020-05-27
Java
3
star
18

super-simple-storage-solution

Java
2
star
19

jcon-2019-democode-graalvm

Java
2
star
20

aws-lambda-getting-started

Repository to blog article "Getting Started with AWS Lambda".
Java
1
star
21

check_ontap

A plugin for Naemon like monitoring system to discover states and values from Netapp devices
Python
1
star
22

hackaburg-2017

Code & Sildes for the Hackaburg 2017 at OTH Regensburg
JavaScript
1
star
23

aws-neptune-example-app

AWS Neptune Example App
Java
1
star
24

happiness-radar

Project for the implementation of the ConSol* happiness radar.
JavaScript
1
star
25

ibm-quarkus

Java
1
star
26

simulator-porting-demo

Demo application showing the usage of the Citrus-Simulator with a bidirectional SOAP interface.
Java
1
star