Exécutez des applications x11 dans un conteneur Docker (prend en charge l'accès réseau à partir du conteneur)

Exécutez des applications x11 dans un conteneur Docker (prend en charge l'accès réseau à partir du conteneur)

J'ai pu faire fonctionner xeyes dans l'article «Affichage des fenêtres des applications X11 exécutées sur des conteneurs Docker» (https://qiita.com/hoto17296/items/7c1ba10c1575c6c38105).

Le --net host est spécifié comme indiqué ci-dessous.

$ docker run --rm -it \
    --net host \
    -e DISPLAY=$DISPLAY \
    -v $HOME/.Xauthority:/root/.Xauthority \
    xeyes

--net host utilise un réseau qui ne peut communiquer qu'entre l'hôte docker et le conteneur docker.

Par conséquent, il ne peut pas être utilisé lorsque vous souhaitez vous connecter à Internet à partir du conteneur Docker.

Dans cet article, vous pourrez accéder au réseau depuis le conteneur et utiliser l'application X11.

Dockerfile

Différence par rapport à Original

Contenu de conf / Dockerfile

FROM alpine

RUN apk --no-cache add bash xeyes

CMD ["/bin/bash"]

Créer une image Docker

docker build -t xeyes conf

Seuls les utilisateurs locaux autorisent les connexions X

xhost +local:

Démarrer le conteneur

Différence par rapport à Original

docker run --rm -it \
    -e DISPLAY=unix${DISPLAY} \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v $HOME/.Xauthority:/root/.Xauthority \
    xeyes

Confirmer l'accès au réseau depuis le conteneur

bash-5.0# ping www.example.com
PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: seq=0 ttl=51 time=149.040 ms
64 bytes from 93.184.216.34: seq=1 ttl=51 time=172.391 ms
64 bytes from 93.184.216.34: seq=2 ttl=51 time=195.793 ms
^C
--- www.example.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 149.040/172.408/195.793 ms

Lancer l'application x11 à partir du conteneur

bash-5.0# xeyes

Message d'erreur

Si xhost + local: n'est pas exécuté, l'erreur suivante se produira.

bash-5.0# xeyes 
No protocol specified
Error: Can't open display: unix:0

GitHub

J'ai mis le Dockerfile et les scripts que j'ai écrits dans cet article sur GitHub.

https://github.com/m-tmatma/xeyes-docker

Recommended Posts

Exécutez des applications x11 dans un conteneur Docker (prend en charge l'accès réseau à partir du conteneur)
[Docker] Comment accéder à l'hôte depuis l'intérieur du conteneur. http: //host.docker.internal:
Accéder à l'interface réseau avec Java
Exécuter PureScript sur un conteneur Docker
Accéder à MySQL sur un conteneur Docker à partir d'un programme Java local (OS hôte)
Comment vérifier le journal dans le conteneur Docker
Comment obtenir un heapdump à partir d'un conteneur Docker
J'ai créé un conteneur Docker pour exécuter Maven
Créer un conteneur pour Docker x Laravel phpMyAdmin
Comment créer un serveur Jenkins avec un conteneur Docker sur CentOS 7 de VirtualBox et accéder au serveur Jenkins à partir d'un PC local
3. Créez une base de données à laquelle accéder à partir du module Web
Copiez et collez le contenu du fichier dans le conteneur Ubuntu Docker
Installez / exécutez un simulateur de robot autonome dans l'environnement wsl2 / docker!
[Docker] Supprimer uniquement le volume associé à un conteneur spécifique
Créez un conteneur qui formate automatiquement le code Docker x Laravel
Authentification 802.1X au réseau du paramètre de liaison dans CentOS7
Vérifier en connectant l'application conteneur Docker en cours de développement depuis un appareil autre qu'un PC (smartphone)
Désassemblage de la commande d'exécution Docker. .. ..
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
Installez lsb_release à partir de la ligne de commande lorsque lsb_release échoue dans l'environnement docker
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse