2015-02-08 10 views
21

Kiedy próbuję uruchomić chromu wewnątrz kontenera Döcker widzę następujący błąd: Gtk: nie można otworzyć wyświetlacza:: 0Running Chromium wewnątrz Docker - gtk: nie można otworzyć wyświetlacz:: 0

Dockerfile: (na podstawie 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"] 

zbudować i uruchomić:

docker build -t chromium 
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium 

i błąd:

[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 

Odpowiedz

36

Nie wiem zbyt wiele na temat chromu, ale, pracowałem z X powrotem, gdy :-) Kiedy mówisz klientowi X, żeby się połączyć z: 0, to co mówisz jest połączone z portem 6000 (lub czymkolwiek twój serwer X działa) + 0 lub port 6000 w tym przypadku. W rzeczywistości DISPLAY to IP: PORT (z wyżej wymienionym +6000). Serwer X działa na twoim hoście, więc jeśli ustawisz:

DISPLAY=your_host_ip:0 

, które mogą działać. Jednak serwery X nie zezwalały na połączenia od żadnego starego klienta, więc będziesz musiał otworzyć swój serwer X. na komputerze hosta, przed uruchomieniem kontenera dokera uruchom

xhost + 
. Wszystko to zakłada, że ​​możesz uruchomić chrom na swoim hoście (to znaczy, że serwer X istnieje na twoim hoście).

+8

'xhost +' rozwiązało to. Dziękuję Ci. – user3538553

+1

zatrzymanie kontenera, uruchomienie 'xhost +' na hoście i ponowne uruchomienie kontenera zrobiło to dla mnie – GameScripting

+6

Albo wydaje się, że możesz zrobić 'xhost + local: docker', aby był bardziej restrykcyjny. –

Powiązane problemy