Як запустити Chromium з докерного контейнера


9

Навколишнє середовище

  • MacOS Sierra 10.12.6
  • Версія Docker 17.09.0-ce, build afdb6d4
  • Ubuntu 16.04
  • XQuartz 2.7.9

Я хочу відкрити браузер Chromium з контейнера докер на робочий стіл Mac.

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

Здійснити

docker commit 2862a7bfcc2f  acme/mycontainer:0.1

Запуск браузера myuserChrome з контейнера 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

Б'юсь об заклад, що в цьому є трохи більше

Якісь покажчики?

UDPATE - використання --privileged

Видаляє помилку Див. Потік на сервері за замовчуванням, але інтерфейс користувача не відображається

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

і ця

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

Хром не відображається

ОНОВЛЕННЯ 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:0 помилка хрому

$ 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

На моєму Mac відредаговано sshd_config

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

На моєму Mac DISPLAY

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

На диску

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
Чи потрапили ви десь із цим, @zabumba?
Даміан Пауелл

Відповіді:


2

Ваша потреба нагадує мені субпідрядника . Він був розроблений для запуску програми для кінцевих користувачів у докер-контейнері з метою захисту конфіденційності та підвищення безпеки.


не забудьте підняти питання. подивіться, чи може хтось інший допомогти. Мені подобається ваш покажчик на субкористувача. це цікаво
zabumba

subuserможе бути "Qubes OS lite", який я шукав! Дякую!
Дейв

1

У мене немає Mac для експерименту, але ось кілька загальних пропозицій:

Зазвичай X11 захищений файлом ключів, який може читати тільки той користувач, який володіє дисплеєм, таким чином використовуючи дозволи файлової системи, щоб стверджувати, що тільки інші програми, які можуть читати цей файл, здатні підключатися. Клієнти читають цей файл, а потім повторюють його вміст на сервері через сокет. Отже, я думаю, ви були на правильному шляху

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

Потім ви показуєте налаштування переадресації SSH X11, але не вказуєте на те, що ви впадаєте в контейнер докера. Пересилання SSH зазвичай використовується:

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

Для цього вам потрібно запустити SSH-сервер всередині контейнера докера, що докладе трохи зусиль ...

Далі ви показуєте те, DISPLAY=/path/to/socketчого я раніше не використовував. Якщо це винахід MacOS, то докерізований Ubuntu може не розуміти цього формату.

Нарешті, ви можете побачити, що насправді намагається зробити хром, використовуючи команду 'strace' зсередини контейнера докера.

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

Це може допомогти вам звузити, які конкретні операції закінчуються безпосередньо перед тим, як вона відмовиться.


Я дам вам винагороду через добрі вказівки, але я не вирішив питання. Я створю ще одну винагороду, щоб побачити, чи може хтось ще допомогти. Врешті-решт надайте Dockerfile. thx
zabumba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.