Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running Chromium inside Docker - Gtk: cannot open display: :0

When I try to run chromium inside a docker container I see the following error: Gtk: cannot open display: :0

Dockerfile: (based on 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"] 

build and run:

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

and the 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 
like image 388
user3538553 Avatar asked Feb 08 '15 10:02

user3538553


2 Answers

i don't know much about chromium, but, I did work with X way back when :-) When you tell an X client to connect to :0, what you are saying is connect to port 6000 (or whatever your X server runs on) + 0, or port 6000 in this case. In fact, DISPLAY is IP:PORT (with the +6000 as mentioned above). The X server is running on your host, so, if you set:

DISPLAY=your_host_ip:0 

that might work. However, X servers did not allow connections from just any old client, so, you will need to open up your X server. on your host, run

xhost + 

before running the docker container. All of this is assuming you can run chromium on your host (that is, an X server exists on your host).

like image 90
Greg Avatar answered Sep 18 '22 00:09

Greg


Try

xhost local:root 

This solve mine, I am on Debian Jessie. https://github.com/jfrazelle/dockerfiles/issues/4

like image 39
RANDRIAMILASOA Stanislas Avatar answered Sep 17 '22 00:09

RANDRIAMILASOA Stanislas