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访问到容器内部的桌面了

猜你喜欢

转载自blog.csdn.net/qq_31638535/article/details/131016239