Docker GUI调研

Docker GUI调研Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。    为了能够在doc
摘要由CSDN通过智能技术生成

Docker GUI调研

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。

    为了能够在docker中运行GUI程序,本文研究了几种常用的GUI方案,介绍其使用的技术,并分析各种方案的优缺点。主要有以下四种方案:

1、基于VNCServer + noVNC构建Docker桌面系统;

2、通过ssh+Xpra + Xephyr构建Docker桌面系统;

3、容器与宿主机器共用X11的socket运行GUI apps;

4、通过ssh转发X窗口运行GUI apps。

    由于运行的时GUI程序,这四种方案都离不开X window协议,所以本文首先简单介绍X window协议,然后依次介绍4种方案以及该方案用到的关键技术,最后进行总结。

一、Xwindow协议

    XWindow即X Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽象层,允许设备独立性和重用方案的任何计算机上实现。

    XWindow由3个相关的部分(X Server、XClient和通道)组合起来(如图1所示):


图1 X window架构图

1.1服务端(Server):

    Server是控制显示器和输入设备(键盘和鼠标)的软件。Server可以创建视窗,在视窗中绘图和文字,回应Client程序的“需求”(requests),但它不会自己完成,只有在Client程序提出需求后才完成动作。每一套显示设备只对应惟一的Server,而Server一般由系统供应商提供,通常无法被用户修改。对操作系统而言,Server只是一个普通的用户程序而已,因此很容易更换新版本,甚至更换成第三方提供的原始程序。

1.2客户端(Client):

    Client是使用系统视窗功能的一些应用程序。在X下的应用程序称做Client,原因是它是Server的客户,要求Server回应它的请求完成特定动作。

    Client无法直接影响视窗行为或显示效果,它们只能送一个请求(request)给Server,由Server来完成这些的请求。典型的请求通常是“在某个视窗中写‘Hello World’的字符串”,或者从A到B划一条直线。

    Client的功能大致可分为两部分:向Server发出“需求”只是它的一部分功能,其他的功能是为用户执行程序而准备的。例如输入文字信息、作图、计算等等。通常,Client程序的这一部分是和X独立的,它对于X几乎不需要知道什么。通常,应用程序(特别是只大型的标准绘图软件、统计软件等)对许多输出设备具有输出的能力,而在X视窗中的显示只是Client程序许多输出中的一种,所以,Client程序中和X相关的部分只占整个程序中很小的一部分。

    用户可以通过不同的途径使用Client程序:通过系统提供的程序使用;通过第三方的软件使用;或者用户为了某种特殊应用而自己编写的Client程序来使用。

1.3通讯通道 (communication channel):

    client藉著它送"需求" 给server,而server藉著它回送状态 (status) 及一些其它的资讯 (information)。

    只要client 和 server 都知道如何使用通道,通道的本身并不是很重要,在系统或网路上支援通讯型态的需求是内建於系统基本的X视窗函数馆(library),所有和通讯型态有关的事都从函数馆独立出来,client和server之间的通讯只要藉著使用这函数馆(在标准X版为xlib)。

    Server和Client通信的方式大致有两类,对应于X系统的两种基本操作模式。

    第一类,Server和Client在同一台机器上执行,它们可以共同使用机器上任何可用的通信方式做互动式信息处理。在这种模式下,X可以同其他传统的视窗系统一样高效工作。

    第二类,Client在一台机器上运行,而显示器和Server则在另一台机器上运行。因此两者的信息交换就必须通过彼此都遵守的网络协议进行,最常用的协议为TCP/IP。这种通信方式一般被称为网络透明性,这也几乎是X独一无二的特性。

    docker容器运行时,在网络上可以看成一个独立于宿主的机器,所以docker运行GUI程序是第二种类型,显示器和Server运行在宿主(本地)机器上,Client运行在容器(远端)中。在docker中运行GUI程序与常见的linux远程桌面所用技术相同。

下面依次介绍4种不同的docker GUI方案。

二、基于VNCServer+noVNC构建Docker桌面系统

2.1 VNC (VirtualNetwork Computer)

VNC(Virtual Network Computer)是虚拟网络计算机的缩写。VNC 是一款优秀的远程控制工具软件,由著名的 AT&T的欧洲研究实验室开发的。VNC 是在基于 UNIX Linux 操作系统的免费的开源软件远程控制能力强大,高效实用,其性能可以和 Windows MAC 中的任何远程控制软件媲美。 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。

VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。VNC的基本运行原理和一些Windows下的

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值