Jak uruchomić Chromium z kontenera dokowanego


9

Środowisko

  • MacOS Sierra 10.12.6
  • Wersja Docker 17.09.0-ce, build afdb6d4
  • Ubuntu 16.04
  • XQuartz 2.7.9

Chcę otworzyć przeglądarkę Chromium z kontenera dokowanego na pulpicie komputera Mac.

docker run -i -t ubuntu:16.04 /bin/bash
apt-get update
apt-get install alsa-base chromium-browser xauth
adduser myuser

Popełnić

docker commit 2862a7bfcc2f  acme/mycontainer:0.1

Uruchamianie przeglądarki chromu myuserz poziomu FAIL kontenera

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

Założę się, że jest coś więcej

Jakieś wskazówki?

UDPATE - za pomocą --privileged

Usuwa błąd Zobacz wątek dotyczący błędu serwera, ale interfejs użytkownika się nie wyświetla

docker run \
       --privileged \
       --user mysuer \
       -i -t acme/mycontainer:0.1 /usr/bin/chromium-browser

i ten

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 nie pojawia się

AKTUALIZACJA 20171011

docker run \
   --privileged \
   --net host \
   -v /tmp/.X11-unix \
   -e DISPLAY \
   --name chromium \
   --user myuser \
   -i -t acme/mycontainer:0.1 \
   bash

Gtk: cannot open display: [...] org.macosforge.xquartz:0Błąd uruchamiania Chromium

$ 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

Na moim komputerze Mac edytowane sshd_config

sudo vim /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
XAuthLocation /opt/X11/bin/xauth

Na moim Macu DISPLAY

$ env | grep DISPLAY
DISPLAY=/private/tmp/com.apple.launchd.Y2wR3QWw57/org.macosforge.xquartz:0

Na dysku

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=

1
Czy udało Ci się to osiągnąć, @zabumba?
— Damian Powell,

Odpowiedzi:


2

Twoja potrzeba przypomina mi subuser . Zaprojektowano go do uruchamiania aplikacji użytkownika końcowego w kontenerze dokowanym w celu ochrony prywatności i zwiększenia bezpieczeństwa.


pamiętaj, aby głosować na pytanie. sprawdź, czy ktoś inny może pomóc. Podoba mi się twój wskaźnik do subuser. to ciekawe
— zabumba

subusermoże być „lite Qubes OS”, którego szukałem! Dzięki!
— Dave

1

Nie mam komputera Mac do eksperymentowania, ale oto kilka ogólnych sugestii:

X11 jest zwykle chroniony za pomocą pliku klucza, który może odczytać tylko użytkownik będący właścicielem wyświetlacza, wykorzystując w ten sposób uprawnienia systemu plików do zapewnienia, że ​​tylko inne programy, które mogą odczytać ten plik, mogą się połączyć. Klienci czytają ten plik, a następnie powtarzają jego zawartość na serwerze przez gniazdo. Więc myślę, że byłeś na dobrej drodze

-e XAUTHORITY=/.Xauthority \
-v ~/.Xauthority:/.Xauthority:ro \

Następnie wyświetlasz ustawienia przekazywania SSH X11, ale nie wskazuje, że ssh do kontenera dokowanego. Przekazywanie SSH jest zwykle używane przez:

ssh $HOST -X program-which-launches-gui

Aby to zrobić, musisz uruchomić serwer SSH wewnątrz kontenera dokowanego, co wymaga trochę wysiłku ...

Następnie pokazujesz, DISPLAY=/path/to/socketktórego wcześniej nie używałem. Jeśli jest to wynalazek MacOS, zadokowane Ubuntu może nie zrozumieć tego formatu.

Na koniec możesz zobaczyć, co chrom próbuje zrobić za pomocą polecenia „strace” z wnętrza kontenera dokowanego.

strace chromium-browser 2>&1 | egrep "open|stat|connect|bind"

Może to pomóc w zawężeniu, które konkretne operacje kończą się niepowodzeniem tuż przed poddaniem się.


Dam ci nagrodę za dobre wskazówki, ale nie rozwiązałem problemu. Stworzę kolejną nagrodę, aby zobaczyć, czy ktoś inny może pomóc. W końcu zapewnij plik Docker. thx
— zabumba,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.