Lancer Chromium inside Docker-Gtk: impossible d'ouvrir l'affichage:: 0
quand j'essaie d'exécuter chromium dans un conteneur docker, je vois l'erreur suivante: Gtk: cannot open display: :0
fichier Dockerfile: (basé sur 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"]
construire et exécuter:
docker build -t chromium
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium
et le message d'erreur:
[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 réponses
Je ne sais pas grand chose sur chromium, mais, j'ai travaillé avec X il y a longtemps quand :-) quand vous dites à un client X de se connecter à :0, ce que vous dites est de se connecter au port 6000 (ou peu importe ce sur quoi votre serveur X tourne) + 0, ou au port 6000 dans ce cas. En fait, DISPLAY est IP: PORT (avec le +6000 comme mentionné ci-dessus). Le serveur X tourne sur votre hôte, donc, si vous définissez:
DISPLAY=your_host_ip:0
qui pourrait fonctionner. Cependant, les serveurs X ne permettent pas les connexions à partir de n'importe quel client ancien, donc, vous aurez besoin de ouvrez votre serveur X. sur votre hôte, exécutez
xhost +
avant d'exécuter le conteneur docker. Tout cela suppose que vous pouvez exécuter chromium sur votre hôte (c'est-à-dire qu'un serveur X existe sur votre hôte).
xhost local:root
C'résoudre le mien, je suis sur Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4
Ajout de référence (voir la vraie réponse de la part de greg)
dans L'image Docker ajouter
RUN apt-get update
RUN apt-get install -qqy x11-apps
https://people.ece.cornell.edu/skand/post/x-forwarding-on-docker/
et puis exécutez
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
vérifier un échantillon de la commande
xclock