2016-03-25 9 views
1

Ich möchte Firefox (oder eine andere grafische Anwendung) im Docker-Container ausführen.Verwenden von VNCserver + GUI-Anwendung + Virtuelle Anzeige im Docker-Container

Meine Anforderung: Wenn ich den Container starte, sollte ich eine virtuelle Anzeige erstellen, starten VNC-Server und dann die GUI-Anwendung. Das bedeutet, nachdem der Container erfolgreich gestartet wurde, kann ich über den VNC-Client eine Verbindung zur GUI-Anwendung herstellen, die im Container ausgeführt wird. Wenn ich die Anwendung schließe, sollte der Container automatisch gestoppt werden.

Versuch 1: ich mit dem Beispiel hier https://hub.docker.com/r/devopsil/vnc-firefox/~/dockerfile/ In diesem Beispiel begann beginnt der Entwickler den VNC-Server über CMD und hält sie für immer läuft. Er legt das Firefox als Teil der RC-Datei, so dass es beginnt, wenn der Container gestartet wird. Wenn Sie über VNC-Client verbinden, können Sie sehen, Firefox und wie erwartet, Schließen von Firefox oder Trennen der VNC-Sitzung stoppt nicht den Container.

Versuch 2: Ich stimmte die Dockerfile wie folgt. Changed nur die letzte Zeile (ersetzt CMD mit ENTRYPOINT und entfernt die „für immer“ Flag“)

ENTRYPOINT ["/usr/bin/x11vnc", "-usepw", "-create"] 

Wiederaufbau und den Betrieb der Container‚Docker Lauf --rm -p 5900‘hatte ein anderes Verhalten jetzt: Behälter beginnt , Verbindung via VNC-Client funktioniert, Firefox nach einigen Sekunden geöffnet (Warten nach Meldung "Erweiterung RANDR fehlt auf dem Display: 20") und der Container nach dem Schließen der VNC-Verbindung automatisch gestoppt.

Versuch 3: Dann habe ich ein Bash-Skript das vncserver und firefox und änderte die Dockerfile kopieren Sie diese Skriptdatei im Bild und machte das Skript als Einstiegspunkt zu starten. Aber habe ich den Fehler wie „Display Variable nicht gesetzt“

#!/bin/bash 
/usr/bin/x11vnc -forever -usepw -create & 
firefox 

Versuch 4: So habe ich den DISPLAY-Variable über den Docker Fahrbefehl aber dann der Fehler kann nicht geöffnet Anzeige.

Frage: Ich weiß nicht, wie man die virtuelle Anzeige, die durch das vncserver-Flag "-create" erstellt wird, an das Firefox mag. Bitte lassen Sie mich wissen, was der beste Weg wäre, die GUI-Anwendung zu starten, wenn der Container gestartet wird, und den Container automatisch zu stoppen, wenn die GUI-Anwendung geschlossen wird. Ich glaube, der ENTRYPOINT in dockerfile sollte auf firefox gesetzt werden. Danke für Ihre Hilfe.

Ich habe diese https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ gesehen, aber das nützt mir nichts, da ich per VNC auf die Anwendung zugreifen möchte.

Antwort

2

ich es geschafft, die Lösung gefunden:

das Skript in Versuch 3 oben geändert als

!/bin/bash 

Xvfb :1 -screen 0 800x600x16 & 
/usr/bin/x11vnc -display :1.0 -usepw & 
DISPLAY=:1.0 
export DISPLAY 
firefox 

Prost gearbeitet folgt.

+0

Vielleicht können wir '/ usr/bin/x11vnc -display: 1.0-usepw-forever &' ausführen. – so61pi

Verwandte Themen