Utiliser VNC comme interface graphique avec un conteneur docker

Si vous faites du développement logiciel, vous connaissez forcément Docker. Et si comme moi, vous êtes condamnés à utiliser Windows, la tentation d’utiliser des conteneurs pour tous vos outils peut être grande.

Docker est parfait pour tous les services fonctionnant en ligne de commande, mais on souhaite parfois utiliser des outils graphiques et dans ce cas, c’est un peu plus compliqué. (surtout sous windows où l’utilisation d’un serveur X est au mieux complexe).

Il existe cependant une solution tout à fait exploitable pour utiliser l’interface graphique : VNC.

L’idée est d’embarquer trois services supplémentaires dans le conteneur de votre application : VNC

Une fois ces éléments packagés, une connexion via votre client VNC préféré vous permettra d’accéder à vos outils.

Mise en place

Pour les besoins de cet article, j’embarquerai l’éditeur de texte / IDE atom dans un conteneur équipé de VNC.

Atom.io Le travail de conteneurisation d’atom a déjà été effectué, nous partirons donc de ce Dockerfile : jamesnetherton/docker-atom-editor

Le Dockerfile que nous allons développer l’étendra pour installer et configurer les composants cité précédemment.

Concrètement, l’installation des éléments se résumera à inclure les lignes suivantes :

USER root
RUN apt-get install -y xvfb x11vnc fluxbox

Il ne reste qu’à configurer et lancer les éléments :

Ce qui donne :

USER atom
ENV DISPLAY :1
CMD Xvfb :1 -screen 0 1280x1024x16 & fluxbox & x11vnc -forever & /usr/bin/atom -f

Voici alors le Dockerfile complet :

FROM jamesnetherton/docker-atom-editor

USER root
RUN apt-get install -y xvfb x11vnc fluxbox

USER atom
ENV DISPLAY :1
CMD Xvfb :1 -screen 0 1280x1024x16 & fluxbox & x11vnc -forever & /usr/bin/atom -f

Un coup de build :

docker build -t gcastel/docker-atom-editor-vnc .

Et vous pouvez lancer votre conteneur en n’oubliant pas d’ouvrir le port 5900 de VNC et de monter le répertoire contenant les fichiers à éditer avec atom :

docker run -p 5900:5900 -v /documents:/documents -t gcastel/docker-atom-editor-vnc

Une connexion client VNC (ex: TightVNC) sur localhost:5900 vous permettra de vous connecter à atom :

Atom in docker via VNC

Enjoy !