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

本文介绍了如何在项目中使用TigerVNC作为VNC服务器,XFCE4提供轻量级桌面环境,以及noVNC作为Web访问接口。通过创建和配置xstartup启动脚本,设置背景色,并解决noVNC连接时的协议问题,最终实现通过开放6080端口映射远程访问容器内的桌面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目刚好要用到,配置了一下,工具主要是三个: 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访问到容器内部的桌面了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白码思

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值