Ejecutando Cromo dentro de Docker-Gtk: no se puede abrir display:: 0
Cuando intento ejecutar chromium dentro de un contenedor docker veo el siguiente error: Gtk: cannot open display:: 0
Dockerfile: (basado en 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"]
Construir y ejecutar:
docker build -t chromium
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium
Y el error:
[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
3 answers
No se mucho sobre chromium, pero, trabajé con X hace mucho tiempo cuando :-) Cuando le dices a un cliente X que se conecte a :0, lo que estás diciendo es que se conecte al puerto 6000 (o lo que sea que se ejecute tu servidor X) + 0, o al puerto 6000 en este caso. De hecho, la PANTALLA es IP:PUERTO (con el +6000 como se mencionó anteriormente). El servidor X se está ejecutando en su host, por lo que, si establece:
DISPLAY=your_host_ip:0
Eso podría funcionar. Sin embargo, los servidores X no permitían conexiones desde cualquier cliente antiguo, por lo que deberá abrir su servidor X. en su anfitrión, ejecute
xhost +
Antes de ejecutar el contenedor docker. Todo esto supone que puede ejecutar chromium en su host (es decir, que existe un servidor X en su host).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 14:56:30
Intenta
xhost local:root
Esto resuelve el mío, estoy en Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-04 07:48:11
Añadiendo como referencia (ver respuesta real de greg)
In Docker image add
RUN apt-get update
RUN apt-get install -qqy x11-apps
Https://people.ece.cornell.edu/skand/post/x-forwarding-on-docker /
Y luego ejecutar
sudo docker run --env DISPLAY=unix$DISPLAY --privileged --volume $XAUTH:/root/.Xauthority --volume /tmp/.X11-unix:/tmp/.X11-unix --rm --runtime=nvidia --rm -it -v /home/alex/coding:/coding alexcpn/nvidia-cuda-grpc:1.0 bash
Compruebe un comando de ejemplo
xclock
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 06:55:34