noVNC+VNCserver实现远程访问Docker容器桌面

一、实验环境

主机:Ubuntu16.04
目标机:docker容器
说明:在主机Ubuntu16.04中安装docker,并虚拟出一台Ubuntu容器,将该容器作为要远程访问的目标机

二、实现过程

1.在docker容器中安装vnc4server,并启动vnc4server服务:

apt-get update

apt-get install vnc4server

apt-get install net-tools  //安装网络工具,用于查看容器的IP地址

vnc4server  //这里会提示输入密码,要记住

红框可以看出启动2号桌面服务:
noVNC+VNCserver实现远程访问Docker容器桌面_第1张图片

2.在主机Ubuntu(或centOS7)中安装并配置noVNC:

sudo apt-get install git
git clone https://github.com/kanaka/noVNC
cd noVNC

./utils/launch.sh --vnc 172.17.0.2:5901  
//172.17.0.2:为目标机docker容器的IP地址。      
//5901:为目标机启动vnc4server时启动的1号服务

vi vnc_token  //新建一个文件,写入要访问的目标机的相关内容,格式为:           目标机名称: IP:端口号

utils/websockify/websockify.py --web=./ --target-config vnc_tokens 6080    //运行上一步新建的内容。  **注意:运行该命令的终端不能关闭**

执行上述最后一条命令后结果(要切换到noVNC目录下执行):
noVNC+VNCserver实现远程访问Docker容器桌面_第2张图片

3.测试网站:
http://192.168.43.227:6080/vnc_auto.html?websockify/?token=host1

说明:192.168.43.227:为主机Ubuntu的IP地址
host1:为vnc_token文件中写入的目标机名称
测试结果:
noVNC+VNCserver实现远程访问Docker容器桌面_第3张图片

vnc_tokens文件中内容格式:
noVNC+VNCserver实现远程访问Docker容器桌面_第4张图片

4.后续需求说明
若需要去掉用户登录后输入密码的界面,需要修改以下部分:

vnc_auto.html文件中:

form.innerHTML += 'type=password size=10 id="password_input" class="noVNC_status" value="123456">';
form.onsubmit = true;

红框内为修改部分:
noVNC+VNCserver实现远程访问Docker容器桌面_第5张图片

core/rbf.js文件中:

this._rfb_password='123456';   //123456代表上面启动vnc4server时输入的密码

红框内为修改部分:
noVNC+VNCserver实现远程访问Docker容器桌面_第6张图片

说明:所有源码已上传到笔者GitHub上,欢迎follow、star。感谢!!!

你可能感兴趣的:(云计算,大数据,服务器)