docker - 在 Docker 中运行 Chromium - Gtk : cannot open display: :0

标签 docker x11 chromium

当我尝试在 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/

相关文章:

docker - 升级 Swarm 模式集群

reactjs - 在生产构建中 react 安全环境变量

docker - macOS Big Sur : Something always takes my port 80. 转到 http://localhost/gives "It works!"

java - 基于 java 的应用程序的 Docker 镜像生命周期

perl - X11::Xlib 模块安装在 Devel/CheckLib.pm 出现语法错误

html - 带回丢失的输入类型日期清除字段按钮(Chromium)

google-chrome - Chromium 使用错误的 (?) srcset 和大小

c - X11 - Xrandr 给了我假监视器

c++ - 编译在 Windows 上调用 x11 的 C++ 程序

Javascript 未捕获的异常处理/window.onerror 消息参数格式