Umgebung
- MacOS Sierra 10.12.6
- Docker Version 17.09.0-ce, Build afdb6d4
- Ubuntu 16.04
- XQuartz 2.7.9
Ich möchte den Chromium-Browser von einem Docker-Container auf meinem Mac-Desktop öffnen.
docker run -i -t ubuntu:16.04 /bin/bash
apt-get update
apt-get install alsa-base chromium-browser xauth
adduser myuser
Verpflichten
docker commit 2862a7bfcc2f acme/mycontainer:0.1
Ausführen des Chrom-Browsers myuser
ab Container FAIL
docker run --user myuser -i -t acme/mycontainer:0.1 /usr/bin/chromium-browser
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
Ich wette, da steckt noch ein bisschen mehr dahinter
Irgendwelche Hinweise?
UDPATE - mit --privileged
Behebt den Fehler Siehe Thread bei Serverfehler, aber die Benutzeroberfläche wird nicht angezeigt
docker run \
--privileged \
--user mysuer \
-i -t acme/mycontainer:0.1 /usr/bin/chromium-browser
und das hier
docker run \
--privileged \
--net host \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
-e XAUTHORITY=/.Xauthority \
-v ~/.Xauthority:/.Xauthority:ro \
--name chromium \
--user mysuser \
-i -t acme/mycontainer:0.1 /usr/bin/chromium-browser
Chrom wird nicht angezeigt
UPDATE 20171011
docker run \
--privileged \
--net host \
-v /tmp/.X11-unix \
-e DISPLAY \
--name chromium \
--user myuser \
-i -t acme/mycontainer:0.1 \
bash
Chromium- Gtk: cannot open display: [...] org.macosforge.xquartz:0
Fehler wird gestartet
$ chromium-browser --verbose
[37:37:1011/154632.348303:VERBOSE1:breakpad_linux.cc(1978)] Breakpad disabled
[1:1:1011/154632.378280:VERBOSE1:zygote_main_linux.cc(537)] ZygoteMain: initializing 0 fork delegates
[1:1:1011/154632.378653:INFO:cpu_info.cc(50)] Available number of cores: 4
[37:37:1011/154632.381303:WARNING:browser_main_loop.cc(275)] Gtk: cannot open display: \
/private/tmp/com.apple.launchd.Y2wR3QWw57/org.macosforge.xquartz:0
Auf meinem Mac bearbeitet sshd_config
sudo vim /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
XAuthLocation /opt/X11/bin/xauth
Auf meinem Mac DISPLAY
$ env | grep DISPLAY
DISPLAY=/private/tmp/com.apple.launchd.Y2wR3QWw57/org.macosforge.xquartz:0
Auf der Festplatte
ls -al /private/tmp/com.apple.launchd.gCYQToI4lb/*
srw-rw-rw- 1 joel wheel 0B Oct 11 17:50
/private/tmp/com.apple.launchd.gCYQToI4lb/org.macosforge.xquartz:0=
Antworten:
Ihr Bedürfnis erinnert mich an den Subuser . Es wurde entwickelt, um Endbenutzeranwendungen in einem Docker-Container auszuführen, um die Privatsphäre zu schützen und die Sicherheit zu erhöhen.
quelle
subuser
könnte das "Qubes OS lite" sein, nach dem ich gesucht habe! Vielen Dank!Ich habe keinen Mac zum Experimentieren, aber hier einige allgemeine Vorschläge:
X11 ist normalerweise mit einer Schlüsseldatei geschützt, die nur von dem Benutzer gelesen werden kann, dem die Anzeige gehört. Daher wird mithilfe der Dateisystemberechtigungen bestätigt, dass nur andere Programme, die diese Datei lesen können, eine Verbindung herstellen können. Die Clients lesen diese Datei und wiederholen ihren Inhalt über den Socket auf dem Server. Ich denke, Sie waren auf dem richtigen Weg
Als Nächstes zeigen Sie die SSH X11-Weiterleitungseinstellungen an, aber keinen Hinweis darauf, dass Sie in den Docker-Container ssh. Die SSH-Weiterleitung wird normalerweise verwendet von:
Dazu müssen Sie einen SSH-Server im Docker-Container ausführen, was ein wenig Aufwand bedeutet ...
Als nächstes zeigen Sie eine,
DISPLAY=/path/to/socket
die ich vorher nicht benutzt habe. Wenn dies eine MacOS-Erfindung ist, versteht das Docker-Ubuntu dieses Format möglicherweise nicht.Schließlich können Sie mit dem Befehl 'strace' im Docker-Container sehen, was Chrome tatsächlich versucht.
Dies kann Ihnen helfen, einzugrenzen, welche bestimmten Vorgänge fehlschlagen, bevor sie aufgeben.
quelle