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
25
demandé sur user3538553 2015-02-08 13:33:10

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).

42
répondu Greg 2015-02-08 14:56:30

xhost local:root

C'résoudre le mien, je suis sur Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4

24
répondu RANDRIAMILASOA Hajaniaina Stan 2016-01-04 07:48:11

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
1
répondu Alex Punnen 2018-07-19 06:55:34