Окружающая обстановка
- MacOS Sierra 10.12.6
- Docker версия 17.09.0-ce, сборка 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
Запуск браузера хрома myuser
из контейнера 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
$ 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=
Ответы:
Ваша потребность напоминает мне subuser . Он предназначен для запуска приложения конечного пользователя в док-контейнере, чтобы защитить конфиденциальность и повысить безопасность.
источник
subuser
может быть "Qubes OS lite", который я искал! Спасибо!У меня нет Mac для экспериментов, но вот несколько общих советов:
X11 обычно защищен файлом ключа, который может быть прочитан только пользователем, который владеет дисплеем, таким образом, используя разрешения файловой системы, чтобы утверждать, что только другие программы, которые могут читать этот файл, могут подключаться. Клиенты читают этот файл и затем повторяют его содержимое на сервере через сокет. Итак, я думаю, что вы были на правильном пути с
Далее вы показываете настройки пересылки SSH X11, но не указываете, что вы ssh попали в контейнер докера. Пересылка SSH обычно используется:
Чтобы сделать это, вам нужно запустить SSH-сервер внутри док-контейнера, что немного усилий ...
Затем вы показываете,
DISPLAY=/path/to/socket
что я не использовал раньше. Если это изобретение MacOS, то докуризованная Ubuntu может не понимать этот формат.Наконец, вы можете увидеть, что на самом деле пытается сделать Chrome, используя команду 'strace' из контейнера Docker.
Это может помочь вам определить, какие конкретные операции завершаются ошибкой, прежде чем они сдаются.
источник