本文介绍如何在 docker 容器内运行 GUI 软件,并让宿主机访问到 GUI 窗口
Xephyr 介绍
- Xephyr 是一个 X Window System 的 X Server 实现,它允许在一个现有的 X Server 内部创建一个嵌套的 X Server
安装
sudo apt-get install xserver-xephyr
使用
$ /usr/bin/Xephyr [:display] [option ...]
:display
是一个可选参数,用于指定嵌套的 X Server 的显示编号。如果不指定,则默认为 :0
option
是一些可选的参数,用于配置嵌套的 X Server 的行为。例如,-ac
参数用于禁用 X Server 的访问控制,-screen
参数用于指定嵌套的 X Server 的屏幕分辨率等
示例
# 创建一个分辨率 1280x960、色深 24 位、背景为斜纹的 Xephyr 窗口
$ Xephyr :2 -screen 1280x960x24 -ac -retro
$ Xephyr -br -ac -noreset -screen 800x600 :1
# 查看 DISPLAY 信息
$ echo $DISPLAY
# 在 Xephyr 窗口中运行 gedit
$ sudo apt install gedit
$ DISPLAY=:2 gedit
$ DISPLAY=:2 xterm
docker 运行 GUI
使用 docker 运行 jess/libreoffice ,并显示到本地显示器
$ sudo apt-get install x11-xserver-utils
$ xhost +
$ docker run --rm \
-v /etc/localtime:/etc/localtime:ro \
--net=host \
-e DISPLAY=:2.0 \
-v $HOME/slides:/root/slides \
-v $HOME/.Xauthority:/root/.Xauthority \
--name libreoffice \
jess/libreoffice
F&Q
Xephyr cannot open host display. Is DISPLAY set?
xhost +