
Table des matières
Docker est couramment utilisé pour les applications côté serveur et de ligne de commande. Cependant, avec la bonne configuration, vous pouvez également exécuter des applications basées sur l’interface graphique à l’intérieur des conteneurs. Ces conteneurs peuvent inclure des bibliothèques GUI et des outils d’affichage, qui permettent aux applications d’exécuter dans un environnement sécurisé et isolé. Cette approche simplifie le développement, les tests et le déploiement d’applications d’interface graphique dans différentes machines ou environnements OS. Ce guide vous guidera dans la façon d’exécuter des applications GUI dans des conteneurs Docker avec une configuration minimale.
Comprendre les conteneurs Docker et Docker GUI
Docker vous permet d’emballer une application avec tout ce dont il a besoin, telles que le code, les bibliothèques et les paramètres, dans une unité auto-contenue 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 avec le système d’affichage de l’hôte, permettant un rendu et une interaction appropriés avec les éléments de GUI.
Pourquoi exécuter des applications GUI dans Docker?
Voici les principales raisons pour lesquelles l’exécution des applications GUI dans Docker peut être bénéfique:
- Lorsque vous exécutez une application GUI dans Docker, tout ce dont il a besoin, comme les bibliothèques et les paramètres, est emballé à l’intérieur du conteneur. Cela maintient votre système principal sans encombrement ou conflit.
- L’utilisation de Docker signifie que votre application fonctionnera de la même manière sur n’importe quelle machine. Que vous développiez, testez ou partagez avec d’autres, l’environnement reste cohérent.
- Les conteneurs permettent de tester une nouvelle application ou de déboguer quelque chose. Vous pouvez exécuter, faire une 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, il n’y a donc pas besoin d’une machine virtuelle.
- Contrairement aux machines virtuelles traditionnelles, les conteneurs Docker utilisent moins de ressources système. Ils commencent plus rapidement et s’exécutent plus facilement, même pour les applications basées sur l’interface graphique.
Exécutez 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 --version
Si cette commande renvoie un numéro de version, cela signifie que Docker est installé et fonctionne. Sinon, vous verrez probablement une erreur «commande non trouvée».
Une fois Docker correctement configuré, vous pouvez passer aux étapes suivantes.
Activer le service Docker
Maintenant, démarrez le service Docker à l’aide de la commande suivante:
sudo systemctl start docker
Pour vérifier si le service Docker fonctionne correctement, exécutez:
sudo systemctl status docker
La sortie confirme que le service Docker est actif et en cours d’exécution sans aucun problème:

Configurer le dossier du projet et Dockerfile
Créons un répertoire nommé «Dockergui», où nous stockons tous les fichiers liés à Docker pour exécuter des applications GUI:
mkdir dockerGUI
Accédez maintenant à 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 dockerGUI
Créez un nouveau fichier nommé dockerguifile pour définir la configuration de l’image Docker:
nano dockerGUIFile
Maintenant, 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édéfinie 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.
Note: Pour essayer une autre application, modifiez simplement l’image et la commande dans votre dockerfile. Par exemple, pour exécuter GEdit, vous pouvez utiliser l’image Ubuntu officielle et installer l’application pendant la version comme celle-ci:
FROM ubuntu
RUN apt-get update && apt-get install -y gedit
ENV DISPLAY=:0
CMD ("gedit")
Construisez l’image Docker
Maintenant que la configuration Docker est configurée dans le dockerguifile, créons l’image docker à l’aide de la commande suivante:
sudo docker build -t myfirefox:1 -f dockerGUIFile .
Cette commande construit une image docker à partir de dockerguifile, le nomme myfirefox avec la balise 1 et utilise le répertoire actuel comme contexte:

Lancement du conteneur Docker avec support GUI activé
Maintenant, activez la prise en charge de GUI pour les conteneurs Docker en exécutant la commande suivante:
xhost +local:docker
La sortie confirme que les clients locaux (comme les conteneurs Docker) exécutés sur mon système sont désormais autorisés à se connecter à mon serveur X:

Maintenant, exécutez le conteneur à l’aide de la commande suivante pour lancer Firefox avec la prise en charge de l’interface graphique sur votre système hôte:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix myfirefox:1
En conséquence, cette commande connecte le conteneur à votre écran, ce qui permet à Firefox de s’ouvrir sur votre écran comme une application native:

Note: En utilisant le --rm
L’option fait que Docker supprime automatiquement le conteneur après la fermeture de l’application, en gardant votre système propre et en l’empêchant docker ps -s
.
Débrancher Docker de X Server
Une fois que vous avez terminé l’utilisation de l’application GUI, il est recommandé de fermer l’accès au serveur X pour des raisons de sécurité:
xhost -local:docker

Réflexions finales
L’exécution d’applications basées sur l’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 s’ils étaient installés sur votre système. C’est une approche simple mais puissante pour tester, développer ou explorer les outils Linux dans un environnement propre. Commencez à construire vos propres conteneurs prêts pour GUI et profitez pleinement de ce que Docker offre sur votre bureau Linux.