Запуск Chromium внутри Docker - Gtk: невозможно открыть дисплей:: 0
Когда я пытаюсь запустить хром внутри контейнера докера, я вижу следующую ошибку: Gtk: невозможно открыть отображение:: 0
Dockerfile: (на основе https://registry.hub.docker.com/u/jess/chromium/dockerfile)
FROM debian:jessie
# Install Chromium
RUN sed -i.bak 's/jessie main/jessie main contrib non-free/g' /etc/apt/sources.list && \
apt-get update && apt-get install -y \
chromium \
chromium-l10n \
libcanberra-gtk-module \
libexif-dev \
libpango1.0-0 \
libv4l-0 \
pepperflashplugin-nonfree \
--no-install-recommends && \
mkdir -p /etc/chromium.d/
# Autorun x11vnc
CMD ["/usr/bin/chromium", "--no-sandbox", "--user-data-dir=/data"]
построить и запустить:
docker build -t chromium
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium
и ошибка:
[1:1:0202/085603:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
No protocol specified
[1:1:0202/085603:ERROR:browser_main_loop.cc(210)] Gtk: cannot open display: :0
Ответы
Ответ 1
Я не знаю много о хром, но, я работал с X обратным пути, когда:-) Когда вы говорите клиенту X, чтобы подключиться к: 0, то, что вы говорите, подключается к порту 6000 (или независимо от того, X сервер работает) + 0 или порт 6000 в этом случае. Фактически, DISPLAY - IP: PORT (с +6000, как указано выше). Сервер X запущен на вашем хосте, поэтому, если вы установите:
DISPLAY=your_host_ip:0
который может работать. Тем не менее, X-серверы не разрешали подключения только от старого клиента, поэтому вам нужно будет открыть свой X-сервер. на хосте, запустите
xhost +
перед запуском контейнера докеров. Все это предполагает, что вы можете запускать хром на своем хосте (то есть, сервер X существует на вашем хосте).
Ответ 2
Попробуйте
xhost local:root
Это решает мое, я на Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4