Führen Sie x11-Apps in einem Docker-Container aus (unterstützt den Netzwerkzugriff vom Container aus).

Führen Sie x11-Apps in einem Docker-Container aus (unterstützt den Netzwerkzugriff vom Container aus).

Ich konnte xeyes in dem Artikel "Anzeigen von Fenstern von X11-Anwendungen, die auf Docker-Containern ausgeführt werden" (https://qiita.com/hoto17296/items/7c1ba10c1575c6c38105) zum Laufen bringen.

Der --net Host wird wie unten gezeigt angegeben.

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

--net host verwendet ein Netzwerk, das nur zwischen Docker-Host und Docker-Container kommunizieren kann.

Daher kann es nicht verwendet werden, wenn Sie vom Docker-Container aus eine Verbindung zum Internet herstellen möchten.

In diesem Artikel können Sie vom Container aus auf das Netzwerk zugreifen und die X11-App verwenden.

Dockerfile

Unterschied zu Original

Inhalt von conf / Dockerfile

FROM alpine

RUN apk --no-cache add bash xeyes

CMD ["/bin/bash"]

Erstellen Sie ein Docker-Image

docker build -t xeyes conf

Nur lokale Benutzer erlauben X-Verbindungen

xhost +local:

Container starten

Unterschied zu Original

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

Bestätigen Sie den Netzwerkzugriff vom Container aus

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

Starten Sie die x11-App aus dem Container

bash-5.0# xeyes

Fehlermeldung

Wenn "xhost + local:" nicht ausgeführt wird, tritt der folgende Fehler auf.

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

GitHub

Ich habe die Docker-Datei und die Skripte, die ich in diesem Artikel geschrieben habe, auf GitHub abgelegt.

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

Recommended Posts

Führen Sie x11-Apps in einem Docker-Container aus (unterstützt den Netzwerkzugriff vom Container aus).
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal:
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Führen Sie PureScript auf einem Docker-Container aus
Greifen Sie über ein lokales Java-Programm (Host-Betriebssystem) auf MySQL in einem Docker-Container zu
So überprüfen Sie das Protokoll im Docker-Container
So erhalten Sie einen Heapdump aus einem Docker-Container
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Erstellen Sie einen Container für Docker x Laravel phpMyAdmin
So erstellen Sie einen Jenkins-Server mit einem Docker-Container unter CentOS 7 von VirtualBox und greifen von einem lokalen PC auf den Jenkins-Server zu
3. Erstellen Sie eine Datenbank für den Zugriff über das Webmodul
Kopieren Sie den Dateiinhalt und fügen Sie ihn in den Ubuntu Docker-Container ein
Installieren / Ausführen eines eigenständigen Robotersimulators in der wsl2 / docker-Umgebung!
[Docker] Löschen Sie nur das Volume, das einem bestimmten Container zugeordnet ist
Erstellen Sie einen Container, der den Docker x Laravel-Code automatisch formatiert
802.1X-Authentifizierung für das Netzwerk der Bonding-Einstellung in CentOS7
Überprüfen Sie dies, indem Sie die in Entwicklung befindliche Docker-Containeranwendung von einem anderen Gerät als einem PC (Smartphone) aus verbinden.
Demontage des Docker-Ausführungsbefehls. .. ..
Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung
So führen Sie das Kotlin Coroutine-Beispiel über die Befehlszeile aus
Installieren Sie lsb_release über die Befehlszeile, wenn lsb_release in der Docker-Umgebung fehlschlägt
Die Geschichte, dass Tomcat in Eclipse unter einem Timeout-Fehler litt