Tutonaut
Quelle: https://pixabay.com/photos/belgium-antwerp-shipping-container-1601918/

Apps in Docker-Container packen, am Beispiel Firefox

So packt Ihr ein GUI-Programm, hier Firefox, in einen Docker-Container und nutzt es dann auf dem Windows-Desktop – Schritt für Schritt.

Wir haben bereits ein paar Artikel zum Thema Docker-Nutzung, jetzt kommt der eigentlich spannende Part: Wie kann man ein beliebiges Linux-Programm in einen Container packen, also sein eigenes Image bauen? Und diesen dann nutzen? Hier bekommt Ihr eine minimale Docker-Anleitung unter Windows!

Das Mini-Projekt

In der folgenden Anleitung legt Ihr einen Docker-Container an, in dem Firefox auf Basis von Ubuntu läuft. Zudem werden noch zwei Verzeichnisse Eures Windows-Rechners eingebunden: Euer Nutzerordner, um Dateien permanent speichern zu können und ein Ordner für das Firefox-Profil – ansonsten würde dieses schließlich mit einem zurückgesetzten/neu gestarteten Container verschwinden. Und zu guter Letzt muss das Firefox-Fenster aus dem Container noch auf dem Windows-Desktop landen.

Die Variante hier setzt vor allem auf Einfachheit: Nur das Minimum an Aufwand – optimieren könnt Ihr später selbst, Hauptsache es läuft etwas.

Zwei Voraussetzungen: Zum einen benötigt Ihr VirtualBox, denn auch Docker arbeitet letztlich mit einer virtuellen Maschine (kann der Docker-Installer aber auch nachinstallieren). Zum anderen braucht Ihr natürlich Docker für Windows. Ich nutze hier Windows 7 mit der Docker Toolbox, also im Docker Quickstart Terminal. Aktuell ist aber Docker Desktop, der eine GUI und ein paar mehr Funktionen bietet. Das Vorgehen im Terminal sollte dort aber 1:1 genauso funktionieren.

1. Docker installieren

Installiert also entweder unter Windows 7 die Docker Toolbox oder unter Windows 10 Docker Desktop. Nach der Installation könnt Ihr dann den Quickstart Terminal aus der Toolbox aufrufen oder das Desktop-Pendant – einfach im Windows-Startmenü suchen.

Hier solltet Ihr nun mit

docker version

eine Statusmeldung bekommen – Docker läuft!

2. VirtualBox installieren

Sofern aus irgendeinem Grund nicht vom Docker-Installer mitinstalliert, installiert VirtualBox.

3. VcXserv installieren

Damit Ihr unter Windows ein Fenster von Ubuntu empfangen könnt, benötigt Ihr einen Xserver – ganz einfach geht es mit VcXserv. Beim Start geht einfach den Einrichtungsassistenten durch, Ihr solltet lediglich im dritten Fenster mit den Extra Settings die Option Disable Access Control wählen – einfach, um eine Fehlerquelle weniger zu haben. Speichert das Profil anschließend am besten auf dem Desktop, so genügt später ein Doppelklick darauf.

Authentifizierung braucht Ihr für Testzwecke nicht.

4. Ordner anlegen

Für permanente Dateien genügt das komplette Nutzerverzeichnis, Ihr könntet aber auch das Download-Verzeichnis wählen. Jedenfalls solltet Ihr etwas unter C:\Users nehmen, dann gibt es auch keine Rechteprobleme. Für das Firefox-Profil legt einen Ordner an, am besten auch im Nutzerordner, also etwa C:\Users\NUTZERNAME\firefoxprofil.

Im Docker-Terminal befindet Ihr Euch standardmäßig im Nutzerverzeichnis, um sicher zu gehen, lasst das aktuelle Verzeichnis ausgeben – dann seht Ihr auch gleich die korrekte Schreibweise:

pwd

Falls das passt, könnt Ihr den Profilordner direkt hier mit

mkdir firefoxprofil

erstellen.

5. Dockerfile anlegen

Erstellt nun, immer noch im Nutzerverzeichnis, ein Projektverzeichnis, etwa docker-firefox, an und erstellt darin eine Datei namens dockerfile und öffnet sie in einem Editor Eurer Wahl – im Terminal:

mkdir docker-firefox
cd docker-firefox
vi dockerfile

Oder macht es einfach im Explorer und mit Notepad.

Im dockerfile stehen alle Infos, um ein lauffähiges Image zu bauen, vom Ubuntu-Download über das Erstellen eines Verzeichnisses in Ubuntu bis zum Installieren und Ausführen von Firefox:

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y firefox 
RUN mkdir /media/eigenedateien
ENTRYPOINT [ "firefox" ]

FROM besorgt das offizielle Basis-Ubuntu-Image – hier könntet Ihr natürlich auch beliebige andere Quellen anzapfen. RUN führt Befehle innerhalb von Ubuntu aus, hier wird also erst per apt-get aktualisiert und Firefox installiert, dann das Verzeichnis /media/eigenedateien angelegt, wohin später Euer Nutzerordner eingehängt wird. Und der ENTRYPOINT liefert letztlich schlicht das Startkommando für Firefox, der somit nach dem Container-Start automatisch ebenfalls startet.

6. Container erstellen

Wechselt im Docker-Terminal spätestens jetzt in den Ordner mit dem dockerfile, hier also docker-firefox. Hier erstellt Ihr nun das Image aus dem dockerfile:

docker build -t mein-docker-fox .

Das -t legt den Namen für das Image fest und der . steht schlicht für das aktuelle Verzeichnis – und schon wird die darin liegende Datei dockerfile abgearbeitet. Es rattert jetzt eine ganze Zeit, anschließend könnt Ihr mal schauen, ob das Image auch bei Docker angekommen ist:

docker images

Jetzt müsst Ihr es nur noch starten.

Liste der lokalen Docker-Images.

7. Container-Firefox starten

Hier zunächst der Befehl:

docker run -v /c/Users/NUTZERNAME:/media/eigenedateien -v /c/Users/NUTZERNAME/firefoxprofil:/root/.mozilla/firefox -ti --rm -d -e DISPLAY=192.168.178.47:0.0 mein-docker-fox

Zunächst werden über -v die Verzeichnisse eingehängt, nach dem Muster Windows-Pfad:Ubuntu-Pfad – zunächst das gesamte Nutzerverzeichnis, anschließend der firefoxprofil-Ordner im Standard-Profilordner in Ubuntu, also /root/.mozilla/firefox.

-ti startet quasi einen interaktiven Terminal, –rm entfernt den Container, sollte er bereits bestehen. Über -d wird der Container vom Terminal gelöst, so dass Ihr dort weiterarbeiten könnt.

Interessant wird es bei -e: Hier wird die Umbegungsvariable DISPLAY gesetzt und zwar auf das Display 0.0 auf dem Rechner 192.168.178.47 – und das ist natürlich die IP des Windows-Rechners, auf dem nun VcXserv seinen Dienst tut und das Display quasi in ein Fenster auf dem Windows-Desktop umsetzt.

Der dockerisierte Firefox und der Speichern-unter-Mini-Dateibrowser.

8. Pfade und Image testen

Um zu schauen, ob die Pfade wie gewünscht vorhanden sind, könnt Ihr einfach im Docker-Firefox Datei/Website speichern unter wählen – dann bekommt Ihr einen minimalen Dateibrowser. Oder Ihr legt einfach ein Lesezeichen an, beendet Firefox, startet mit dem Befehl aus dem letzten Schritt neu und schaut, ob das Lesezeichen noch da ist. Falls ja: Glückwunsch, fertig.

Falls nein: Oje, jetzt folgt vermutlich schmerzhaftes Troubleshooting – lässt sich leider nie ganz ausschließen.

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen und Tutonaut unterstützen möchtest:
Spendier mir einen Kaffee via Paypal. Schon mal im Voraus: Danke!

Nicht verpassen: cli.help

Kommentar schreiben

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Do NOT follow this link or you will be banned from the site!