Table des matières
2. Activer le transfert x11 (Linux)
Mesures:
3. Utilisez le matériel et l'accès aux entrées (facultatif mais utile)
4. Alternative: utilisez une configuration VNC ou Novnc
Comment:
5. Considérations de macOS et Windows
Résumé
Maison Opération et maintenance Docker Comment exécuter des applications GUI dans un conteneur Docker?

Comment exécuter des applications GUI dans un conteneur Docker?

Jul 27, 2025 am 12:25 AM

Pour exécuter l'application GUI dans le conteneur Docker, vous devez partager le service d'affichage de l'hôte et configurer correctement les autorisations: 1. Exécutez xhost local: docker sur Linux pour permettre au conteneur d'accéder à x11; 2. Mount /tmp/.x11-unix et variables d'environnement d'affichage lors du démarrage du conteneur; 3. Assurez-vous que les dépendances liées à X11 sont installées dans le miroir; 4. Ajouter éventuellement la prise en charge du GPU, de l'audio et du périphérique d'entrée; 5. ou utilisez la solution VNC / Novnc pour obtenir un accès sécurisé multiplateforme; 6. MacOS doit installer XQuartz et définir l'affichage en tant qu'IP hôte; 7. Windows doit coopérer avec VCXSRV et d'autres serveurs X via WSL2 et configurez l'affichage pour pointer de l'IP hôte; Assurez-vous enfin que l'application peut rendre et interagir normalement.

Comment exécuter des applications GUI dans un conteneur Docker?

L'exécution d'applications GUI dans un conteneur Docker n'est pas aussi simple que l'exécution d'outils de ligne de commande, car les applications GUI ont besoin d'accès au serveur d'affichage de l'hôte (comme X11 ou Wayland). Cependant, c'est certainement possible - en particulier sur Linux - avec la bonne configuration. Voici comment le faire.

Comment exécuter des applications GUI dans un conteneur Docker?

1. Comprendre le défi

Les conteneurs Docker sont isolés par défaut. Une application GUI doit:

  • Connectez-vous au serveur d'affichage (généralement X11 sur Linux)
  • Accédez aux périphériques d'entrée (souris, clavier)
  • Partagez peut-être les ressources GPU pour le rendu

Sans configuration appropriée, l'application échouera avec des erreurs comme:

Comment exécuter des applications GUI dans un conteneur Docker?
 Erreur: Impossible d'ouvrir l'affichage

2. Activer le transfert x11 (Linux)

La méthode la plus courante sur Linux est de permettre au conteneur d'utiliser le serveur X11 de l'hôte.

Mesures:

  1. Autoriser l'accès à X11 depuis LocalHost Exécutez ceci sur l' hôte :

    Comment exécuter des applications GUI dans un conteneur Docker?
     Xhost Local: Docker

    Cela permet aux conteneurs Docker se connecter à votre serveur X. Pour la sécurité, revoyez-le plus tard avec xhost -local:docker .

  2. Exécutez le conteneur avec des supports appropriés de volume et d'environnement

     docker run -it \
      --env = "affichage" \
      --volume = "$ xauth: /root/.xauthority: rw" \
      --volume = "/ tmp / .x11-Unix: /tmp/.x11-unix: rw" \
      --Volume = "$ home / .xauthority: /root/.xauthority: rw" \
      votre IMAGE DE GUI-GUI

    Ou si vous n'utilisez pas xauth , une version plus simple fonctionne dans de nombreux cas:

     docker run -it \
      --env = "affichage" \
      --volume = "/ tmp / .x11-Unix: /tmp/.x11-unix: rw" \
      votre IMAGE DE GUI-GUI

    Remplacez your-gui-app-image par votre nom d'image réel.

  3. Installez les dépendances X11 et GUI dans l'image Assurez-vous que votre Dockerfile comprend:

     Exécutez la mise à jour apt-get && apt-get install -y \
        x11-apps \
        && rm -rf / var / lib / apt / lists / *

    Puis testez avec:

     xclock

3. Utilisez le matériel et l'accès aux entrées (facultatif mais utile)

Pour l'interaction complète de l'interface graphique (par exemple, le son, les appareils USB, GPU), considérez:

  • Accélération du GPU (NVIDIA) :

     - gpus all

    Nécessite nvidia-docker installé.

  • Accès à l'audio :

     --device / dev / snd \
    -e pulse_server = unix: $ {xdg_runtime_dir} / pulse / native \
    -v $ {xdg_runtime_dir} / pulse / natif: $ {xdg_runtime_dir} / pulse / natif \
    -v ~ / .config / pulse / cookie: /root/.config/pulse/cookie
  • Accès à la souris / clavier (rarement nécessaire):

     --Device / Dev / Input /

4. Alternative: utilisez une configuration VNC ou Novnc

Au lieu d'exposer X11, exécutez un environnement de bureau léger à l'intérieur du conteneur et accédez à lui via un navigateur.

Comment:

  1. Installez un service de bureau (par exemple, XFCE) et VNC Server dans le conteneur.
  2. Exposez le port VNC ( 5900 ).
  3. Connectez-vous à l'aide d'un client VNC ou servez Novnc pour l'accès Web.

Ceci est plus sécurisé et portable sur toutes les plates-formes (y compris MacOS / Windows), mais ajoute des frais généraux.

Exemple de commande:

 Docker Run -P 5900: 5900 GUI-DESKTOP-IMAGE

Utilisez ensuite une visionneuse VNC pour vous connecter à localhost:5900 .


5. Considérations de macOS et Windows

  • MacOS : vous avez besoin d'un serveur X11 comme Xquartz . Après l'installation:

    • Activez "Autoriser les connexions à partir des clients réseau" dans les paramètres XQuartz.
    • Redémarrez Xquartz.
    • Set IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
    • Exécutez le conteneur avec:
       -e affichage = $ ip: 0
    • Et permettre l'accès:
       xhost $ ip
  • Windows (WSL2) : utilisez un serveur X comme VCXSRV ou X410 , puis définissez:

     Export Display = $ (awk '/ namesserver / {print $ 2; exit}' /etc/resolv.conf):0

    Et exécutez le conteneur avec --env="DISPLAY" et le partage de socket x11.


    Résumé

    Pour exécuter des applications GUI dans Docker:

    • Sur Linux , partagez la prise X11 et exécutez xhost local:docker .
    • Sur MacOS / Windows , configurez un serveur X externe et DISPLAY de points.
    • Pour une meilleure isolement, considérez les solutions basées sur VNC .
    • Installez toujours les bibliothèques GUI nécessaires dans votre image.

    Ce n'est pas trivial, mais une fois configuré, il fonctionne de manière fiable pour le développement, les tests ou l'exécution d'applications de bureau isolées.

    Fondamentalement: partagez l'affichage, ouvrez les autorisations et assurez-vous que l'application peut rendre.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1538
276
Comment installer Docker sur Mac? Comment installer Docker sur Mac? Jul 26, 2025 am 05:55 AM

DockercanbeinstalledonamacusingdockerdesktopbyfollowingTheSesteps: 1.Verifieryourmacmeets there equits - macos10.15ornewer, Intel OrAppleSiliConChip, atleast4gbram, andVirtualizationEnabled; 2.DownloadDockerDeskTopFromHttps: //www.docker.com/products/docker-D

Comment désinstaller Docker? Comment désinstaller Docker? Jul 28, 2025 am 12:02 AM

Onwindows, uninstalldockerdesktopviatesettings → applications, thermoveleftOverfilesInwslwithSudorm-rf / var / lib / docker.2.onmacos, quitdocke RDESKTOP, MOVECHOCKER.APTOTRASH, ANDELEDELECONFIGURATIONSFILES DE LA ~ / BIBLIOTHÈQUE.3.onubuntu / Debian, StopTheService, Purgedockerpackagesw

Comment copier des fichiers de l'hôte vers le conteneur Docker? Comment copier des fichiers de l'hôte vers le conteneur Docker? Jul 27, 2025 am 02:37 AM

Utilisez la commande dockercp pour copier des fichiers de l'hôte vers le conteneur Docker sans avoir besoin d'exécuter le conteneur; 2. Assurez-vous que le conteneur existe et exécutez dockercp / path / on / hostfile.txtContainer-name: / path / in / conteneur; 3. Si le répertoire cible n'existe pas, vous devez d'abord le créer. Lors de la copie de l'ensemble du dossier, le contenu sera copié récursivement. Une fois l'opération terminée, le fichier sera disponible dans le conteneur, sans reconstruire l'image ni monter le volume.

Comment sauvegarder un conteneur Docker avec ses données? Comment sauvegarder un conteneur Docker avec ses données? Jul 26, 2025 am 02:59 AM

TobackupadockerContainerwithitsData, FirstBackupNamedVolumeSusingAporaryContainertOceAreatarBallofthevolumeContents.2.Next, préserveContainerConfigurationByExporttingWithDockerinspector, préférablement, bydefiningItinaDockerComposeFile.3

Comment exécuter des applications GUI dans un conteneur Docker? Comment exécuter des applications GUI dans un conteneur Docker? Jul 27, 2025 am 12:25 AM

Pour exécuter l'application GUI dans le conteneur Docker, vous devez partager le service d'affichage de l'hôte et configurer correctement les autorisations: 1. Exécutez xhost local: docker sur Linux pour permettre au conteneur d'accéder à x11; 2. Mount /tmp/.x11-unix et variables d'environnement d'affichage lors du démarrage du conteneur; 3. Assurez-vous que les dépendances liées à X11 sont installées dans le miroir; 4. Ajouter éventuellement la prise en charge du GPU, de l'audio et du périphérique d'entrée; 5. ou utilisez la solution VNC / Novnc pour obtenir un accès sécurisé multiplateforme; 6. MacOS doit installer XQuartz et définir l'affichage en tant qu'IP hôte; 7. Windows doit coopérer avec VCXSRV et d'autres serveurs X via WSL2 et configurer l'affichage et configurer l'affichage via WSL2 et utiliser VCXSRV et d'autres serveurs X et configurer l'affichage

Comment déployez-vous des applications dans un cluster Docker Swarm? Comment déployez-vous des applications dans un cluster Docker Swarm? Jul 21, 2025 am 02:05 AM

La clé pour déployer des applications sur Dockerswarm est d'utiliser des services plutôt que des conteneurs autonomes, et de gérer les configurations, les clés et les mises à jour de roulement via des outils intégrés. 1. Premièrement, conteneurisez l'application et poussez-la vers un référentiel miroir accessible au nœud d'essaim; 2. Utilisez DockerServiceCreate pour définir le service et son état attendu, tels que le nombre de répliques, la cartographie des ports, etc.; 3. Utilisez des dockerSecret et DockerConfig pour gérer respectivement les informations sensibles et les configurations non sensibles et les référencer dans le service; 4. Utilisez DockerServicesCale pour réaliser la mise à l'échelle, utilisez DockerServiceUpdate pour effectuer des mises à jour de version interrompue et peut contrôler la stratégie de mise à jour via les paramètres.

Comment définissez-vous les limites de ressources (CPU, mémoire) pour un conteneur Docker? Comment définissez-vous les limites de ressources (CPU, mémoire) pour un conteneur Docker? Jul 24, 2025 am 12:33 AM

Pour limiter l'utilisation des ressources des conteneurs Docker, vous pouvez spécifier les limites de CPU et de mémoire via des paramètres de ligne de commande lors de l'exécution du conteneur. Les méthodes spécifiques sont les suivantes: 1. Utiliser --memory (ou -m) pour définir la limite supérieure de la mémoire, telle que --memory = "512m" signifie que la limite est de 512 Mo de RAM; 2. Utiliser - Memory-Swap pour définir la mémoire totale plus l'espace de swap, tel que --memory-swap = "1g" signifie un total de 1 Go disponible; 3. Utiliser --CPUS pour limiter le nombre de noyaux de processeur, tels que --cpus = "1,5" signifie que jusqu'à 1,5 noyaux de processeur sont utilisés; 4. Utiliser --CPU-S

Comment supprimer les images docker pendantes? Comment supprimer les images docker pendantes? Aug 02, 2025 am 11:37 AM

SanglingImageSaUntaggedlayers n'est pas associé à un contrat de contrôle et à un canneauvoyovedusingDocker’sbuilt-Incommands.1.UsedOckerimagePrunetosafeLyRemovedangLingImages après la congrat, un Oraddd-FoltoforreMovalswithoutprompt.2.

See all articles