2015-02-08 53 views
21

:基於GTK:無法打開顯示:0運行Chromium裏泊塢窗 - 圖形:無法打開顯示:當我嘗試運行泊塢窗容器我看到下面的錯誤中鉻0

Dockerfile:(基於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"] 

構建和運行:

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

和錯誤:

[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 

回答

36

我對鉻沒有太多瞭解,但是,我確實使用過X方式工作:-)當您告訴X客戶端連接到:0時,您所說的是連接到端口6000(或任何你的X服務器運行)+ 0,或者在這種情況下是6000端口。實際上,DISPLAY是IP:PORT(如上所述+6000)。 X服務器在您的主機上運行,​​因此,如果您設置:

DISPLAY=your_host_ip:0 

可能工作。但是,X服務器不允許來自任何舊客戶端的連接,因此,您需要打開X服務器。在您的主機上運行

xhost + 

運行Docker容器之前。所有這一切都假設您可以在主機上運行鉻(即主機上存在X服務器)。

+8

'xhost +'解決了它。謝謝。 – user3538553 2015-02-09 00:31:31

+1

停止容器,在主機上運行'xhost +'並再次啓動容器對我來說是這樣做的 – GameScripting 2015-07-01 19:40:04

+6

或者你似乎可以執行'xhost + local:docker'來限制性更高。 – 2016-01-06 17:50:50