[授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统

2023-05-16

by Falcon of TinyLab.org
2015/05/02

最初发表:泰晓科技 – 聚焦嵌入式 Linux,追本溯源,见微知著!
原文链接:基于 VNCServer + noVNC 构建 Docker 桌面系统
评论说明:为更好地聚合大家的讨论,请到上面原文的评论区回复。


简介

基于 ssh + Xpra 构建 Docker 桌面系统 刚介绍了如何通过 Ssh + Xpra 构建 C/S 架构的 Docker 桌面系统。

本文介绍另外一种 B/S 架构的 Docker 桌面系统,即基于 VNCServer + noVNC 构建一个可以通过浏览器直接访问的 Docker 桌面系统。

noVNC

VNCServer 是一个为了满足分布式用户共享服务器资源,而在服务器开启的一项服务,对应的客户端软件有图形化客户端 VNCViewer,而 noVNC 则是 HTML5 VNC 客户端,它采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现。

noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。noVNC 采用 WebSockets 实现,但是当前蛮多 VNC 服务器都不支持 WebSockets,所以 noVNC 不能直连 VNC 服务器,而是需要开启一个代理来做 WebSockets 和 TCP sockets 之间的转换。这个代理叫做 websockify。

更多细节请访问末尾的参考资料。

下载镜像:fcwu/docker-ubuntu-vnc-desktop


$ docker pull fcwu/docker-ubuntu-vnc-desktop
  

启动容器并加载 VNCServer 服务


$ CONTAINER_ID=$(docker run -d -p 6080:6080 dorowu/ubuntu-desktop-lxde-vnc)
  

获得登录密码


$ docker logs $CONTAINER_ID | sed -n 1p
User: ubuntu Pass: ubuntu
  

Pass 后的字符串即为密码,这里为 ubuntu

通过浏览器登录

测试过的浏览器有 Chrome。访问方式:

  • 本地宿主机访问

    • http://localhost:6080/vnc.html
  • 远程访问

    • 先获取 IP 地址

        $ docker exec 8222763de ifconfig eth0 | grep "inet addr:"
        inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
      
    • 远程访问:http://172.17.0.1:6080/vnc.html

连接后,输入上面获得的密码 ubuntu 即可访问。

效果图

[外链图片转存失败(img-rZI3OhF5-1562434258888)(http://www.tinylab.org/wp-content/uploads/2015/05/docker-desktop-with-vncserver+novnc.jpg)]

自主构建


$ git clone https://github.com/fcwu/docker-ubuntu-vnc-desktop.git
$ cd docker-ubuntu-vnc-desktop
$ docker build -t tinylab/ubuntu-desktop-lxde-vnc .
  

参考资料

  • HTML 5案例研究:使用WebSockets、Canvas与JavaScript构建noVNC客户端
  • 使用 noVNC 开发 Web 虚拟机控制台
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统 的相关文章

随机推荐