如何在docker中使用主机DISPLAY

xpt*_*xpt 5 unix linux x11 ubuntu docker

如何DISPLAY在docker中使用host?

DISPLAY在 docker 实例中进行设置,并希望将其用于我的 xapps。但这就是我得到的:

me@178887a67067:/$ env | grep DISPLAY
DISPLAY=192.168.0.102:2

me@178887a67067:/$ xterm &
[1] 11
me@178887a67067:/$ xterm: Xt error: Can't open display: 192.168.0.102:2

[1]+  Exit 1                  xterm
Run Code Online (Sandbox Code Playgroud)

如何允许 docker 中的 xapp 在DISPLAY 使用主机网络 ( --network host) 的情况下连接并使用我的主机?谢谢。

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
Run Code Online (Sandbox Code Playgroud)

[修正]

我知道这听起来像是常见问题解答,但我已经尝试了以下网站上的所有方法,但没有一个对我有用:

使用 https://iamhow.com/How_To/Docker_How_To.html#1484268中最简单的解决方案作为示例:

$ xhost +local:
non-network local connections being added to access control list

$ docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro image
# env | grep DISPLAY
DISPLAY=192.168.0.102:2

# xterm & 
Warning: This program is an suid-root program or is being run by the root user.
...
xterm: Xt error: Can't open display: %s

[1]+  Exit 1                  xterm
Run Code Online (Sandbox Code Playgroud)

Sri*_*ram 4

虽然这个问题很老了,很多人可能有类似的问题。

我搜索了谷歌并尝试了不同网站上的所有方法。但没有一个奏效。然后我在docker中使用host pid并且它起作用了。

尝试在 docker 中使用主机pid 。

$ xhost +local:
$ docker run --pid=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro image
Run Code Online (Sandbox Code Playgroud)