# Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)
# Docker version 18.09.3, build 774a1f4
在运行docker的时候加入以下参数
docker run -it \
-v /etc/localtime:/etc/localtime:ro \
--net=host \
-e DISPLAY=:10.0 \
-v $HOME/slides:/root/slides \
-e GDK_SCALE \
-e GDK_DPI_SCALE \
--name [containername] \
[yourimage] \
/bin/bash
同时在docker宿主机关闭X11验证
sudo vim /etc/lightdm/lightdm.conf
#增加 xserver-allow-tcp=true
sudo systemctl restart lightdm
xhost + #每次重新开机后都要运行
X11服务的图形显示原理是在服务端和客户端之间构建一组Server/Client,X11通过『DISPLAY』环境变量来指定将图形显示到何处。
基于这个原理,将Docker中的GUI程序显示到外面,就是通过某种方式把X11的客户端的内容从容器里面传递出来。方法有两种
从应用场景上划分,又可以分成两类情况:『运行本地的GUI程序』和『运行远程服务器上的GUI程序』。这两类情况在操作上很相似,但前者可以使用unix套接字,而后者必然要使用tcp套接字转发,原理上有很大差别。具体参阅这篇博客。