项目需要在远程 docker 环境内运行需要显示图像的程序,在本地显示器上监测运行结果。
使用的方案是远端安装 vncserver 生成虚拟桌面并设为默认显示, 客户端使用 xtightvncviewer 连接远端的虚拟显示器监测结果。
如果是本地启动 docker, 启动项加 -e DISPLAY=unix$DISPLAY 就可以映射外部显示器到 docker.
Docker 服务端操作
启动 docker 时,添加 vnc 端口映射。 vnc 服务默认端口为5901。
1
$ sudo docker run -it -p 5901:5901
安装 xfce 桌面环境, vnc 服务器
1
$ apt install xfce4 xfce4-goodies tightvncserver
启动 vncserver, 设置密码,生成初始化配置文件
1
$ vncserver
关闭 vnc 服务,修改配置文件
1
$ vncserver -kill :1
用以下配置覆写 ~/.vnc/xstartup 文件
1
2
3#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &重启 vnc 服务。成功启动后,会打印虚拟显示器地址: new X desktop is 9asfdsfasf8:1, 将这个地址设置到环境变量里。
1
2$ vncserver
$ export DISPLAY=9asfdsfasf8:1
客户端操作
- 安装 xtightvncviewer 访问 IP:port, 输入启动vncserver时设置的密码即可
1
2$ apt install xtightvncviewer
$ xtightvncviewer 127.0.0.1:5901
参考 文章