docker容器内部配置VNC和novnc,主机或者外部可访问

最近项目刚好要用到,配置了一下,工具主要是三个: 1. tigervnc, 2. xfce4 3 . novnc

1. tigervnc apt安装既可以,作用提供vncserver的服务

apt install tigervnc-standalone-server tigervnc-common

2. xfce4提供桌面服务,比较轻量化

apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

3 . novnc直接在github上下载好即可

git clone https://github.com/novnc/noVNC.git

先按照一下步骤配好启动脚本,这个是参考这篇博客, 防止博客失效, 特此粘贴过来, 侵权删

# 创建启动脚本
touch $HOME/.vnc/xstartup

# 执行此命令之前在容器内安装了vim
vim $HOME/.vnc/xstartup

## 添加以下脚本(如果有乱码,删除脚本中的中文配置)
#!/bin/sh

unset SESSION_MANAGER 
unset DBUS_SESSION_BUS_ADDRESS 
startxfce4 &    #启动xface4
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup 
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources 
xsetroot -solid grey    #设置背景色

# 保存并关闭文件。无论何时启动或者重启TigerVNC服务器,都将会自动执行上述命令

# 使用chmod
chmod +x ~/.vnc/xstartup

启动nvcserver的一个窗口,-localhost no指可以外部进行vnc访问, 不仅仅是localhost,这里的窗口:1 就是5901, :2 对应的就是5902

vncserver :2 -localhost no

查看当前运行的窗口:

vncserver -localhost novncserver -list

启动novnc

./utils/novnc_proxy --vnc localhost:5902 --web /home/noVNC

在启动novnc可能会有错误, 类似: 

400 Client must support 'binary' or 'base64' protocol

这个错误可以通过修改websock.js来解决,有对应的issue

Solved editing file /novnc/core/websock.js
Locate line:
this._websocket = new WebSocket(uri, protocols);
replace with
this._websocket = new WebSocket(uri, ['binary', 'base64']); //protocols);

这样配置结束之后, 只要我们的容器向外部开放6080端口的映射,那么就可以vnc访问到容器内部的桌面了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值