use*_*553 36 x11 chromium docker
当我尝试在docker容器中运行chrome时,我看到以下错误:Gtk:无法打开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"]
Run Code Online (Sandbox Code Playgroud)
构建和运行:
docker build -t chromium
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged chromium
Run Code Online (Sandbox Code Playgroud)
和错误:
[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
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 54
我不太了解铬,但是,当我告诉X客户端连接到:0时,我确实使用X方式工作:0,你说的是连接到端口6000(或者你的X服务器运行的任何东西)在这种情况下,+)或端口6000.实际上,DISPLAY是IP:PORT(如上所述+6000).X服务器正在您的主机上运行,因此,如果您设置:
DISPLAY=your_host_ip:0
Run Code Online (Sandbox Code Playgroud)
这可能有用.但是,X服务器不允许来自任何旧客户端的连接,因此,您需要打开X服务器.在你的主机上,运行
xhost +
Run Code Online (Sandbox Code Playgroud)
在运行docker容器之前.所有这一切都假设您可以在主机上运行chrome(即主机上存在X服务器).
小智 30
尝试
xhost local:root
Run Code Online (Sandbox Code Playgroud)
这解决了我,我在Debian Jessie.https://github.com/jfrazelle/dockerfiles/issues/4
添加为参考(请参阅 greg 的真实答案)
在 Docker 镜像中添加
RUN apt-get update
RUN apt-get install -qqy x11-apps
Run Code Online (Sandbox Code Playgroud)
https://people.ece.cornell.edu/skand/post/x-forwarding-on-docker/
然后运行
sudo docker run \
--rm \ # delete container when bash exits
-it \ # connect TTY
--privileged \
--env DISPLAY=unix$DISPLAY \ # export DISPLAY env variable for X server
-v $XAUTH:/root/.Xauthority \ # provide authority information to X server
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
-v /home/alex/coding:/coding \
alexcpn/nvidia-cuda-grpc:1.0 bash
Run Code Online (Sandbox Code Playgroud)
检查示例命令
xclock
Run Code Online (Sandbox Code Playgroud)
对于 Ubuntu 20.04,更改DISPLAY=:0
为DISPLAY=$DISPLAY
我修复它,我的本地环境已$DISPLAY
设置为:1
:
docker run --rm -ti --net=host -e DISPLAY=$DISPLAY fr3nd/xeyes
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40199 次 |
最近记录: |