Dockerfile实现客户端通过网页访问容器的桌面和伪终端,主要的工具是guacamole

  Dockerfile实现客户端通过网页访问容器的桌面和伪终端,主要的工具是guacamole。

  首先来介绍guacamole,Guacamole是一种基于HTML5和AJAX技术的vnc客户端,有了它就可以直接通过web浏览器,快速访问vnc server上的Xwindows系统界面了。优酷上有一段关于Guacamole的视频演示在http://v.youku.com/v_show/id_XMTg4ODgwNDg0.html

  git上dockerfile代码:http://git.oschina.net/wangyufu/docker_guacamole

  分为三个Dockerfile,执行的顺序:

  1. ubuntu-xfce-vnc-desktop 基础镜像是Ubuntu15.04
  2. jdk-tomcat 基础镜像是ubuntu-xfce-vnc-desktop
  3. guacamole 基础镜像是jdk-tomcat

  第一个Dockerfile是安装基础镜像和一些桌面环境,第二个Dockerfile是基于ubuntu-xfce-vnc-desktop的镜像安装jdk和tomcat,因为guacamole需要java的环境支持,下面的就是安装guacamole。所以每个Dockerfile的代码中FROM需要自己改一下。

  web显示桌面的分辨率需要先再ubuntu-xfce-vnc-desktop/supervisord.conf中的 command=/usr/bin/Xvfb :1 -screen 0 1280x720x16    #修改合适的分辨率

  ssh的登录用户名,guacamole/startup.sh 修改创建的用户名和密码,guacamole/user-mapping.xml 修改为创建后的用户名和密码。

  所有都完成后就可以登录了,启动容器,访问服务启动的地址和映射到容器的8080端口加路径为/guacamole

  

  登入后进入管理界面:

  

  选择ssh:

  选择vnc:

  在安装guacamole遇到的问题:

  问题:启动tomcat时,日志报Invalid or unreadable WAR file : error in opening zip file

  解决:安装zip的包

  

  问题:启动tomcat时,日志报No guacamole.properties file found within GUACAMOLE_HOME or the classpath.

  解决:创建一个新的用户家目录为tomcat的程序的目录并赋权限,在/etc/profile 下添加GUACAMOLE_HOME的变量并刷新。

时间: 2024-10-06 22:02:55

Dockerfile实现客户端通过网页访问容器的桌面和伪终端,主要的工具是guacamole的相关文章

网页访问性能

一般用户眼中,网页访问就是快与慢.下面对这个过程做一些定量分析. 术语定义 定义几个术语: dnst:DNS查询时间 ct: 连接建立时间 rt: 发出请求开始,到收到响应的第一个字节的时间 dt: 网页内容下载时间 plt: 网页加载时间:从发出DNS请求到下载完页面的整个过程的耗时 访问网页的过程如下图所示: 首先是DNS查询,获取要访问的主机的IP地址.之后发送连接请求,通过三次握手同web服务器建立起一个TCP连接.连接建立成功后,客户端发送HTTP请求,Web服务器解析请求,然后返回所

2.3-docker网络-如何让外部网络访问容器资源

Docker 网络管理 - 外部访问容器 1.首先使用centos镜像新建一个容器,然后在该容器中安装httpd服务,并启动 2.再把该容器导成一个新的镜像(centos-httpd),然后再使用新镜像创建容器,并指定端口映射 docker run -itd -p 5123:80 centos-httpd bash  //-p 可以指定端口映射,本例中将容器的80端口映射为本地的5123端口 3.docker exec -it container_id  bash 4.启动httpd: /usr

html网页访问WebAPI中的方法遇到的问题

1.移动端访问远程服务时,建议使用WebAPI 2.用不同浏览器访问WebAPI时返回的文本格式是不同的,Chrome Firefox将在浏览器中以XML形式显示此列表,IE浏览器将获得Json格式的数据,区别的原因在于不同浏览器的请求头不同,分别为:application/XML和application/json 2.客户端发送Get请求访问WebAPI时,框架会查找以Get开头的方法进行匹配,当客户端发送Post请求时,框架会查找以Post开头的方法进行匹配 4.跨域访问WebAPI中的方法

外部世界如何访问容器? - 每天5分钟玩转 Docker 容器技术(37)

上节我们学习了容器如何访问外部网络,今天讨论另一个方向:外部网络如何访问到容器? 答案是:端口映射. docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器.容器启动时通过-p参数映射端口: 容器启动后,可通过 docker ps 或者 docker port 查看到 host 映射的端口.在上面的例子中,httpd 容器的 80 端口被映射到 host 32773 上,这样就可以通过 <host ip>:<32773> 访问容器的 web 服

C++ 安全并发访问容器元素

C++ 安全并发访问容器元素 2014-9-24 flyfish 标准库STL的vector, deque, list等等不是线程安全的 例如 线程1正在使用迭代器(iterator)读vector 线程2正在对该vector进行插入操作,使vector重新分配内存,这样就造成线程1中的迭代器失效 STL的容器 多个线程读是安全的,在读的过程中,不能对容器有任何写入操作 多个线程可以同时对不同的容器做写入操作. 不能指望任何STL实现来解决线程难题,必须手动做同步控制. 方案1 对vector进

安装openstack dashboard时网页访问HTTP500错误

在centos中安装openstack-dashboard时,按照官网配置后,网页访问显示HTTP500错误,可能的错误情况会有: 配置/etc/openstack-dashboard/local_settings?文件时,在memcached?会话存储服务中IP地址填写错误,IP地址应该是管理网络的IP地址 另外一个原因可能是因为在/etc/httpd/conf.d/openstack-dashboard.conf配置文件中缺少参数,直接添加WSGIApplicationGroup %{GLO

Docker外部访问容器

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口. 使用 docker ps 可以看到,本地主机的 49155 被映射到了容器的 5000 端口.此时访问本机的 49155 端口即可访问容器内 web 应用提供的界面. $ sudo docker run -d -P training/webapp python app.py $ sud

JSP简单实现统计网页访问次数

JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对象每次只有当应用关闭才被销毁的特性. 核心代码如下: <% Object obj =application.getAttribute("counter"); if(obj==null){ application.setAttribute("counter", ne

35-外部世界如何访问容器?

上节我们学习了容器如何访问外部网络,今天讨论另一个方向:外部网络如何访问到容器? 答案是:端口映射. docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器.容器启动时通过-p参数映射端口: 容器启动后,可通过 docker ps 或者 docker port 查看到 host 映射的端口.在上面的例子中,httpd 容器的 80 端口被映射到 host 32768 上,这样就可以通过 <host ip>:<32768> 访问容器的 web 服