Lorsque j'essaie d'exécuter du chrome dans un conteneur Docker, je vois l'erreur suivante: Gtk: impossible d'ouvrir l'affichage:: 0
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 l'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
je ne sais pas grand chose sur le chrome, mais j'ai travaillé avec X quand :-) Quand vous dites à un client X de se connecter à: 0, ce que vous dites c'est se connecter au port 6000 (ou quoi que votre serveur X fonctionne) on) + 0, ou le port 6000 dans ce cas. En fait, DISPLAY est IP: PORT (avec le +6000 comme mentionné ci-dessus). Le serveur X fonctionne sur votre hôte, donc, si vous définissez:
DISPLAY=your_Host_ip:0
cela pourrait fonctionner. Cependant, les serveurs X ne permettaient pas les connexions de n'importe quel ancien client, vous devrez donc ouvrir 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 le chrome sur votre hôte (c'est-à-dire qu'un serveur X existe sur votre hôte).
Essayer
xhost local:root
Cela résout le mien, je suis sur Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4
Ajout comme référence (voir la vraie réponse 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/
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 exemple de commande
xclock