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

by Falcon of TinyLab.org

2015/05/02

简介

基于 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 即可访问。

效果图

自主构建

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

参考资料

时间: 2024-07-30 16:47:26

基于 VNCServer + noVNC 构建 Docker 桌面系统的相关文章

基于 ssh + Xpra 构建 Docker 桌面系统

by Falcon of TinyLab.org 2015/05/01 Docker 桌面系统 初识 Docker,发现大部分文章都只是介绍非 GUI 的应用.想到蛮多场景需要图形化界面,所以搜罗了一下 Docker 镜像: $ sudo docker search desktop NAME DESCRIPTION STARS OFFICIAL AUTOMATED dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVN

基于kubernetes构建Docker集群管理详解-转

http://blog.liuts.com/post/247/ 一.前言        Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前最新版本为0.6.2.本文介绍如何基于Centos7.0构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能.以下为Kubernetes的架构设计图:1. Pods        在Kuberne

基于zedBoard的手势识别及桌面操控系统_项目论文

基于zedBoard的手势识别及桌面操控系统 山东大学信息学院集成电路 Sorin 目录 基于zedBoard的手势识别及桌面操控系统........................................................................ 1 综述..........................................................................................................

Ubuntu中使用Docker/LXC迅速启动一个桌面系统

2013年07月18日 | 标签: cloud, container, docker, lxc | 作者:vpsee Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用 了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更

使用 Docker/LXC 迅速启动一个桌面系统

使用 Docker/LXC 迅速启动一个桌面系统 Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用 了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环

从入门到放弃,.net构建博客系统(二):依赖注入

文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行ioc的依赖注入,但具体是怎么注入的呢?我们先一步步往下走 一.注册autofac配置 首先bootstraper会进行初始化,接着将当前mvc控制器工厂改为AutofacControllerFactory. 1 public class AutofacConfig 2 { 3 /// <summary&g

基于Dubbo框架构建分布式服务 (二)

Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的Forking Cluster模式配置,就可以对一个调用请求并行发送到多台对等的提供方

[转载] 基于Dubbo框架构建分布式服务

转载自http://shiyanjun.cn/archives/1075.html Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的F

基于Dubbo框架构建分布式服务 【转】

Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选择Dubbo的Forking Cluster模式配置,就可以对一个调用请求并行发送到多台对等的提供方