如何在 docker 内使用主机 DISPLAY
How to use host DISPLAY within docker
如何在 docker 内使用主机 DISPLAY
?
我在我的 docker 实例中设置 DISPLAY
并想将它用于我的 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
如何允许 docker 中的 xapps 连接和使用我的主机 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
[修改]
我知道这听起来像是常见问题解答,但我已经尝试了以下站点的所有方法,但 none 对我有用:
- http://wiki.ros.org/docker/Tutorials/GUI
- https://iamhow.com/How_To/Docker_How_To.html#1484268
- https://forums.docker.com/t/still-not-sure-how-to-run-gui-apps-in-docker-containers/79103/3
使用最简单的解决方案
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
虽然这个问题很老,很多人可能有类似的问题issue/question。
我搜索了 google 并尝试了来自不同网站的所有方法。但是 none 起作用了。然后我在 docker 中使用主机 pid 并且它起作用了。
尝试在 docker.
中使用主机 pid
$ xhost +local:
$ docker run --pid=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro image
如何在 docker 内使用主机 DISPLAY
?
我在我的 docker 实例中设置 DISPLAY
并想将它用于我的 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
如何允许 docker 中的 xapps 连接和使用我的主机 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
[修改]
我知道这听起来像是常见问题解答,但我已经尝试了以下站点的所有方法,但 none 对我有用:
- http://wiki.ros.org/docker/Tutorials/GUI
- https://iamhow.com/How_To/Docker_How_To.html#1484268
- https://forums.docker.com/t/still-not-sure-how-to-run-gui-apps-in-docker-containers/79103/3
使用最简单的解决方案 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
虽然这个问题很老,很多人可能有类似的问题issue/question。
我搜索了 google 并尝试了来自不同网站的所有方法。但是 none 起作用了。然后我在 docker 中使用主机 pid 并且它起作用了。
尝试在 docker.
中使用主机 pid$ xhost +local:
$ docker run --pid=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro image