So führen Sie GUI-basierte Anwendungen in Docker aus

Run Gui Apps Docker

Docker wird häufig für serverseitige und Befehlszeilenanwendungen verwendet. Mit der richtigen Konfiguration können Sie jedoch auch GUI-basierte Anwendungen in Containern ausführen. Diese Container können GUI-Bibliotheken und Anzeigetools enthalten, die es ermöglichen, Anwendungen in einer sicheren und isolierten Umgebung auszuführen. Dieser Ansatz vereinfacht die Entwicklung, das Testen und die Bereitstellung von GUI-Anwendungen auf verschiedenen Maschinen oder Betriebssystemumgebungen. Diese Anleitung zeigt Ihnen, wie Sie GUI-Anwendungen in Docker-Containern mit minimalem Aufwand ausführen können.

Verständnis von Docker und Docker GUI-Containern

Docker ermöglicht es Ihnen, eine Anwendung zusammen mit allem, was sie benötigt, wie Code, Bibliotheken und Einstellungen, in einer eigenständigen Einheit namens Container zu verpacken. Diese Container teilen sich den Kernel des Hostsystems, was sie leichtgewichtig, schnell zu starten und effizient im Vergleich zu vollständigen virtuellen Maschinen macht.

GUI-Container sind Docker-Setups, die grafische Anwendungen wie Firefox, Gedit oder andere Desktop-Tools enthalten, sodass deren Fenster auf Ihrem tatsächlichen Bildschirm angezeigt werden. Im Gegensatz zu Standardcontainern erfordern diese eine zusätzliche Konfiguration, um mit dem Anzeigesystem des Hosts zu verbinden, was eine ordnungsgemäße Darstellung und Interaktion mit GUI-Elementen ermöglicht.

Warum GUI-Anwendungen in Docker ausführen?

Hier sind die wichtigsten Gründe, warum das Ausführen von GUI-Anwendungen in Docker vorteilhaft sein kann:

  • Wenn Sie eine GUI-Anwendung in Docker ausführen, ist alles, was sie benötigt, wie Bibliotheken und Einstellungen, im Container verpackt. Dadurch bleibt Ihr Hauptsystem frei von Unordnung oder Konflikten.
  • Mit Docker funktioniert Ihre Anwendung auf jeder Maschine gleich. Egal, ob Sie entwickeln, testen oder mit anderen teilen, die Umgebung bleibt konsistent.
  • Container erleichtern das Testen einer neuen Anwendung oder das Debuggen von etwas. Sie können sie ausführen, pausieren oder entfernen, ohne Ihr Hostsystem zu beeinträchtigen.
  • Docker ermöglicht es Ihnen, Linux-GUI-Anwendungen auf Nicht-Linux-Systemen auszuführen. Dies geschieht durch die Verwendung von Anzeigeteilen wie XQuartz oder VcXsrv, sodass keine virtuelle Maschine erforderlich ist.
  • Im Gegensatz zu traditionellen VMs verwenden Docker-Container weniger Systemressourcen. Sie starten schneller und laufen reibungsloser, selbst bei GUI-basierten Anwendungen.

GUI-Anwendungen in Docker ausführen

Um GUI-Anwendungen in Docker auszuführen, müssen Sie zunächst sicherstellen, dass Docker auf Ihrem Linux-System installiert ist. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen:

docker--version

Wenn dieser Befehl eine Versionsnummer zurückgibt, bedeutet dies, dass Docker installiert und funktionsfähig ist. Andernfalls sehen Sie wahrscheinlich einen “Befehl nicht gefunden”-Fehler.

Sobald Docker ordnungsgemäß eingerichtet ist, können Sie zu den nächsten Schritten übergehen.

Docker-Dienst aktivieren

Starten Sie nun den Docker-Dienst mit dem folgenden Befehl:

sudo systemctl start docker

Um zu überprüfen, ob der Docker-Dienst ordnungsgemäß läuft, führen Sie aus:

sudo systemctl status docker

Die Ausgabe bestätigt, dass der Docker-Dienst aktiv und ohne Probleme läuft:

Check Docker Status

Projektordner und Dockerfile einrichten

Lassen Sie uns ein Verzeichnis namens “dockerGUI” erstellen, in dem wir alle Docker-bezogenen Dateien zum Ausführen von GUI-Anwendungen speichern:

mkdir dockerGUI

Navigieren Sie jetzt in dieses Verzeichnis, um sicherzustellen, dass alle nachfolgenden Dateien, die wir erstellen oder ändern, im dockerGUI-Ordner gespeichert werden:

cd dockerGUI

Erstellen Sie eine neue Datei namens dockerGUIFile, um die Docker-Image-Konfiguration zu definieren:

nano dockerGUIFile

Fügen Sie nun die folgenden Zeilen Code in die dockerGUIFile ein:

FROM jess/firefox  
ENV DISPLAY=:0  
CMD ["firefox"]

Der obige Code weist Docker an, ein vorgefertigtes Image von Firefox zu verwenden und die Anzeigeumgebung so einzustellen, dass die GUI auf dem Hostsystem angezeigt werden kann. Darüber hinaus wird sichergestellt, dass Firefox automatisch gestartet wird, wenn der Container ausgeführt wird.

Hinweis: Um eine andere Anwendung auszuprobieren, ändern Sie einfach das Image und den Befehl in Ihrem Dockerfile. Um beispielsweise Gedit auszuführen, können Sie das offizielle Ubuntu-Image verwenden und die Anwendung während des Builds wie folgt installieren:

FROM ubuntu  
RUN apt-get update&&apt-get install-y gedit  
ENV DISPLAY=:0  
CMD ["gedit"]

Docker-Image erstellen

Jetzt, da die Docker-Konfiguration in der dockerGUIFile eingerichtet ist, lassen Sie uns das Docker-Image mit dem folgenden Befehl erstellen:

sudodocker build -t myfirefox:1-f dockerGUIFile .

Dieser Befehl erstellt ein Docker-Image aus der dockerGUIFile, benennt es myfirefox mit dem Tag 1 und verwendet das aktuelle Verzeichnis als Kontext:

Build Docker Image

Docker-Container mit aktivierter GUI-Unterstützung starten

Aktivieren Sie nun die GUI-Unterstützung für Docker-Container, indem Sie den folgenden Befehl ausführen:

xhost +local:docker

Die Ausgabe bestätigt, dass lokale Clients (wie Docker-Container), die auf meinem System ausgeführt werden, jetzt mit meinem X-Server verbinden dürfen:

Führen Sie nun den Container mit dem folgenden Befehl aus, um Firefox mit GUI-Unterstützung auf Ihrem Hostsystem zu starten:

docker run -it--rm-eDISPLAY=$DISPLAY-v/tmp/.X11-unix:/tmp/.X11-unix myfirefox:1

Infolgedessen verbindet dieser Befehl den Container mit Ihrer Anzeige, was es Firefox ermöglicht, auf Ihrem Bildschirm wie eine native Anwendung zu öffnen:

Run Gui App From Docker

Hinweis: Die Verwendung der Option --rm bewirkt, dass Docker den Container automatisch löscht, nachdem die Anwendung geschlossen wurde, wodurch Ihr System sauber bleibt und verhindert wird, dass er in docker ps -s angezeigt wird.

Docker vom X-Server trennen

Sobald Sie die GUI-Anwendung verwendet haben, wird empfohlen, den Zugriff auf den X-Server aus Sicherheitsgründen zu schließen:

xhost -local:docker

Fazit

Das Ausführen von GUI-basierten Anwendungen in Docker ist eine großartige Möglichkeit, die Möglichkeiten von Containern über die Befehlszeile hinaus zu erweitern. Mit der richtigen Einrichtung können Sie Desktop-Anwendungen aus einem Container starten, als wären sie auf Ihrem System installiert. Es ist ein einfacher, aber leistungsstarker Ansatz für Tests, Entwicklung oder das Erkunden von Linux-Tools in einer sauberen Umgebung. Beginnen Sie mit dem Erstellen Ihrer eigenen GUI-fähigen Container und nutzen Sie die Vorteile dessen, was Docker auf Ihrem Linux-Desktop bietet.