当我尝试在 docker 容器中运行 chromium 时,我看到以下错误:Gtk: cannot open display: :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
最佳答案
我对 chromium 了解不多,但是,当你告诉 X 客户端连接到 :0 时,我确实使用 X X 服务器运行在) + 0,或者在这种情况下是端口 6000。事实上,DISPLAY 是 IP:PORT(上面提到的 +6000)。 X 服务器正在您的主机上运行,因此,如果您设置:
DISPLAY=your_host_ip:0
这可能行得通。但是,X 服务器不允许来自任何旧客户端的连接,因此,您需要打开您的 X 服务器。在你的主机上,运行
xhost +
在运行 docker 容器之前。所有这一切都假设您可以在您的主机上运行 chromium(也就是说,您的主机上存在 X 服务器)。
关于docker - 在 Docker 中运行 Chromium - Gtk : cannot open display: :0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392949/