test ocean inside docker x11 chromium

ocean - Ejecución de Chromium dentro de Docker-Gtk: no se puede abrir la pantalla:: 0



nginx inside docker (3)

Cuando intento ejecutar cromo dentro de un contenedor docker, veo el siguiente error: Gtk: no se puede abrir la pantalla:: 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


Agregando como referencia (ver respuesta real de greg)

En Docker agregar imagen

RUN apt-get update RUN apt-get install -qqy x11-apps

https://people.ece.cornell.edu/skand/post/x-forwarding-on-docker/

y luego correr

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

comprobar un comando de muestra

xclock


No sé mucho sobre el cromo, pero sí trabajé con X cuando :-) Cuando le dices a un cliente X que se conecte a: 0, lo que estás diciendo es conectarse al puerto 6000 (o lo que sea que funcione tu servidor X) en) + 0, o puerto 6000 en este caso. De hecho, DISPLAY es IP: PORT (con el +6000 como se mencionó anteriormente). El servidor X se está ejecutando en su host, por lo tanto, si configura:

DISPLAY=your_host_ip:0

aquello podría funcionar. Sin embargo, los servidores X no permitieron conexiones desde cualquier cliente anterior, por lo tanto, tendrá que abrir su servidor X. en tu host, corre

xhost +

Antes de ejecutar el contenedor docker. Todo esto supone que puede ejecutar cromo en su host (es decir, existe un servidor X en su host).