可以把docker镜像看做一台没配显示器的电脑,程序可以运行,但是没地方显示。 linux目前的主流图像界面服务X11 支持 客户端/服务端(Client/Server)的工作模式,只要在容器启动的时候,将 『unix:端口』或『主机名:端口』共享给docker,docker 就可以通过端口找到显示输出的地方,和linux系统共用显示。
1)在主系统里运行
$ sudo apt-get install x11-xserver-utils $ xhost +
这两句的作用是开放权限,允许所有用户,当然包括docker,访问X11 的显示接口
2)在启动docker容器时,添加选项如下:
-v /tmp/.X11-unix:/tmp/.X11-unix \ #共享本地unix端口 -e DISPLAY=unix$DISPLAY \ #修改环境变量DISPLAY -e GDK_SCALE \ #这两个应该是与显示效果相关的环境变量 -e GDK_DPI_SCALE \
最终的启动命令类似这样
$ docker run -d \ -v /etc/localtime:/etc/localtime:ro \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=unix$DISPLAY \ -e GDK_SCALE \ -e GDK_DPI_SCALE \ --name libreoffice \ jess/libreoffice
这样启动后的容器,运行有图形界面的程序就可以自由显示,和在本地显示一样了。
这样操作已经十分方便了。需要注意的是,每次重新开机,需要在本机操作一次
xhost +
打开权限。
西部数码的容器云是通过docker技术,在集群服务器上部署容器服务实现,安全可靠,拥有上万Linux镜像,功能强大、轻量灵活,可轻松作集群服务,自由轻松搭建私有网络。
高性价比的容器云产品链接 https://www.west.cn/paas/container/