Comment exécuter des applications basées sur une interface graphique dans Docker

Docker est couramment utilisé pour des applications côté serveur et en ligne de commande. Cependant, avec la bonne configuration, vous pouvez également exécuter des applications basées sur une interface graphique à l’intérieur de conteneurs. Ces conteneurs peuvent inclure des bibliothèques GUI et des outils d’affichage, ce qui permet aux applications de s’exécuter dans un environnement sécurisé et isolé. Cette approche simplifie le développement, les tests et le déploiement d’applications GUI sur différentes machines ou environnements OS. Ce guide vous expliquera comment exécuter des applications GUI à l’intérieur de conteneurs Docker avec une configuration minimale.
Comprendre Docker et les conteneurs GUI Docker
Docker vous permet de regrouper une application avec tout ce dont elle a besoin, comme le code, les bibliothèques et les paramètres, dans une unité autonome appelée conteneur. Ces conteneurs partagent le noyau du système hôte, ce qui les rend légers, rapides à démarrer et efficaces par rapport aux machines virtuelles complètes.
Les conteneurs GUI sont des configurations Docker qui incluent des applications graphiques, comme Firefox, Gedit ou d’autres outils de bureau, permettant à leurs fenêtres d’apparaître sur votre écran réel. Contrairement aux conteneurs standard, ceux-ci nécessitent une configuration supplémentaire pour se connecter au système d’affichage de l’hôte, permettant un rendu et une interaction appropriés avec les éléments GUI.
Pourquoi exécuter des applications GUI dans Docker ?
Voici les principales raisons pour lesquelles l’exécution d’applications GUI dans Docker peut être bénéfique :
- Lorsque vous exécutez une application GUI dans Docker, tout ce dont elle a besoin, comme les bibliothèques et les paramètres, est emballé à l’intérieur du conteneur. Cela garde votre système principal libre de désordre ou de conflits.
- Utiliser Docker signifie que votre application fonctionnera de la même manière sur n’importe quelle machine. Que vous développiez, testiez ou partagiez avec d’autres, l’environnement reste cohérent.
- Les conteneurs facilitent le test d’une nouvelle application ou le débogage de quelque chose. Vous pouvez les exécuter, les mettre en pause ou les supprimer sans affecter votre machine hôte.
- Docker vous permet d’exécuter des applications GUI Linux sur des systèmes non Linux. Il le fait en utilisant des outils de partage d’affichage comme XQuartz ou VcXsrv, donc il n’est pas nécessaire d’avoir une machine virtuelle.
- Contrairement aux machines virtuelles traditionnelles, les conteneurs Docker utilisent moins de ressources système. Ils démarrent plus rapidement et fonctionnent plus harmonieusement, même pour des applications basées sur une interface graphique.
Exécuter des applications GUI dans Docker
Pour exécuter des applications GUI dans Docker, vous devez d’abord vous assurer que Docker est installé sur votre système Linux. Vous pouvez vérifier cela en exécutant la commande suivante :
docker--versionSi cette commande renvoie un numéro de version, cela signifie que Docker est installé et fonctionne. Sinon, vous verrez probablement une erreur “commande introuvable”.
Une fois Docker correctement configuré, vous pouvez passer aux étapes suivantes.
Activer le service Docker
Maintenant, démarrez le service Docker en utilisant la commande suivante :
sudo systemctl start dockerPour vérifier si le service Docker fonctionne correctement, exécutez :
sudo systemctl status dockerLa sortie confirme que le service Docker est actif et fonctionne sans aucun problème :

Configurer le dossier de projet et le Dockerfile
Créons un répertoire nommé “dockerGUI”, où nous stockerons tous les fichiers liés à Docker pour exécuter des applications GUI :
mkdir dockerGUIMaintenant, naviguez vers ce répertoire pour vous assurer que tous les fichiers suivants que nous créons ou modifions seront conservés dans le dossier dockerGUI :
cd dockerGUICréez un nouveau fichier nommé dockerGUIFile pour définir la configuration de l’image Docker :
nano dockerGUIFileMaintenant, collez les lignes de code suivantes dans le dockerGUIFile :
FROM jess/firefox
ENV DISPLAY=:0
CMD ["firefox"]Le code ci-dessus indique à Docker d’utiliser une image préconstruite de Firefox et définit l’environnement d’affichage afin que l’interface graphique puisse apparaître sur le système hôte. De plus, il garantit que Firefox se lance automatiquement lorsque le conteneur s’exécute.
Remarque : Pour essayer une application différente, il suffit de changer l’image et la commande dans votre Dockerfile. Par exemple, pour exécuter Gedit, vous pouvez utiliser l’image officielle d’Ubuntu et installer l’application pendant la construction comme ceci :
FROM ubuntu
RUN apt-get update&&apt-get install-y gedit
ENV DISPLAY=:0
CMD ["gedit"]Construire l’image Docker
Maintenant que la configuration Docker est mise en place dans le dockerGUIFile, construisons l’image Docker en utilisant la commande suivante :
sudodocker build -t myfirefox:1-f dockerGUIFile .Cette commande construit une image Docker à partir de dockerGUIFile, la nomme myfirefox avec le tag 1, et utilise le répertoire courant comme contexte :

Lancer le conteneur Docker avec le support GUI activé
Maintenant, activez le support GUI pour les conteneurs Docker en exécutant la commande suivante :
xhost +local:dockerLa sortie confirme que les clients locaux (comme les conteneurs Docker) s’exécutant sur mon système sont maintenant autorisés à se connecter à mon serveur X :
Maintenant, exécutez le conteneur en utilisant la commande suivante pour lancer Firefox avec le support GUI sur votre système hôte :
docker run -it--rm-eDISPLAY=$DISPLAY-v/tmp/.X11-unix:/tmp/.X11-unix myfirefox:1En conséquence, cette commande connecte le conteneur à votre affichage, ce qui permet à Firefox de s’ouvrir sur votre écran comme une application native :

Remarque : L’utilisation de l’option --rm permet à Docker de supprimer automatiquement le conteneur après la fermeture de l’application, gardant votre système propre et évitant qu’il n’apparaisse dans docker ps -s.
Déconnecter Docker du serveur X
Une fois que vous avez terminé d’utiliser l’application GUI, il est recommandé de fermer l’accès au serveur X pour des raisons de sécurité :
xhost -local:dockerDernières réflexions
Exécuter des applications basées sur une interface graphique dans Docker est un excellent moyen d’étendre ce que les conteneurs peuvent faire au-delà de la ligne de commande. Avec la bonne configuration, vous pouvez lancer des applications de bureau à partir d’un conteneur comme si elles étaient installées sur votre système. C’est une approche simple mais puissante pour les tests, le développement ou l’exploration d’outils Linux dans un environnement propre. Commencez à construire vos propres conteneurs prêts pour GUI et tirez pleinement parti de ce que Docker offre sur votre bureau Linux.