Lancer des applications desktop avec Docker

Cet article a été publié depuis plus de 6 mois, cela signifie que le contenu peut ne plus être d'actualité.

C'est un fait, l'utilisation de Docker s'est démocratisé dans notre milieu. Et même si nous n'en sommes qu'au début, il est possible de faire tellement de choses avec les conteneurs. Bien que dans un premier temps, ils étaient principalement utilisés pour faciliter la gestion de la diversité des environnements de développement, nombreux sont ceux qui commencent à l'utiliser pour gérer des déploiements d'applications en production.

On commence également à voir de plus en plus de personnes utiliser Docker pour lancer des applications desktop. Je ne vais pas ici vous expliquer comment le faire, on trouve sur le net de nombreux articles qui vous explique cela (notamment celui de Jessie FRAZELLE).

Le principe est simple car il suffit de partager l'environnement X11 de l'hôte avec son conteneur. Cela se réalise en 2 étapes : le partage du dossier de travail de X11 et l'utilisation d'une variable d'environnement indiquant comment accéder au gestionnaire.

docker run [...] -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

Par contre ce que l'on ne dit pas dans les articles, c'est que certains systèmes sont configurés pour empêcher des connexions externes sur votre environnement graphique. Il n'est pas rare alors de se retrouver avec une erreur Unable to initialize GTK+.

Il sera alors nécessaire d'autoriser la connexion d'un système externe via la commande :

xhost +  # pour autoriser toutes les connexions externes
xhost +local:`docker inspect --format='{{ .Config.Hostname }}' $containerId` # pour restreindre à l'utilisation d'un conteneur

Une fois cette configuration effectuée, vous pourrez lancer sans problème votre application graphique dans un conteneur.