最近突发奇想,想在docker中安装一个图形化远程桌面。可以用作远程调试,轻量级办公。其实主要为了玩,想探索一下docker到底能不能玩图形化程序。在docker中的图形化界面 ,到底能不能做简单的轻办公?
特点:
https://www.bilibili.com/video/BV1mL41177Av
操作系统:Ubuntu 20.04.3 LTS 编写日期 : 2021-12-02 作者:ITKEY
没有特别说明的地方,都是以root权限执行。
示例:
docker run --name vnc -it -p 15901:5901 ubuntu bash
--name
设置CONTAINER名称,如果为空则随机生成-p
设置主机与容器的端口映射主机端口15901
对应容器5901
ubuntu
对应的是镜像名称设置方法见:https://blog.csdn.net/lxyoucan/article/details/121691910
非docker可忽略!!!
如果你在docker中ubuntu中配置vnc。配置完成以后,发现一个奇怪的问题。发现图形界面中,中文不全面 。有一些地方依然显示的英文的。虽然不影响,但是强迫证受不了。经过我各种研究和尝试,终于找到了原因。因为docker中的ubuntu是精简版本的,有一些软件包被精简了导致。解决办法,就是恢复正常模式。
执行以下命令:
unminimize
等待执行完成了,重启vnc服务,这时发现,部分汉化不完全的问题已经成功解决了。
这样做的缺点也很明显,使整个镜像的体积增大了。这就看你的取舍了。建议在配置vnc前执行unminimize
,这样会更快一些。配置完vnc在执行也是可以,就是要等久一些。
如果不需要中文环境,可以忽略这一步。设置中文环境会让镜像体积增大一些。
server的环境,默认是英文的。导致我们的vnc界面打开后也是英文的。如何设置成中文呢?
查看当前语言环境
echo $LANG
查看当前系统是否有中文语言包
locale -a
如果没有中文则,安装中文语言包。
apt install language-pack-zh-hans
修改系统环境变量为中文
然后,修改/etc/environment(在文件的末尾追加):
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
vim /etc/profile
增加以下内容:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
vim ~/.bashrc
增加以下内容:
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
最后,执行命令:
sudo locale-gen
立马生效执行以下:
source ~/.bashrc
apt install tigervnc-standalone-server -y
#精简安装
sudo apt-get install -y --no-install-recommends xubuntu-desktop
#不安装这个会报错Failed to execute child process “dbus-lauch”(xxxxx)
apt install dbus-x11 -y
#安装中文字体 ,否则会出现乱码
apt install fonts-wqy-microhei -y
#安装中文语言名和fcitx中文输入法
apt install -y \
gnome-user-docs-zh-hans \
language-pack-gnome-zh-hans \
fcitx \
fcitx-pinyin \
fcitx-table-wubi
我们这里以用户itkey为例(也可以换成其他用户),以下命令用itkey用户执行。
登录你想开启vnc远程桌面的用户。如下:
#新建用户
adduser itkey
#切换到用于vnc的用户
su itkey
#设置vnc连接密码
vncpasswd
执行结果如下:
$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)?
以下命令用itkey用户执行。
su itkey
vim ~/.vnc/xstartup
内容如下:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export LANG=zh_CN.UTF-8
fcitx -r
startxfce4
设置权限:
chmod u+x ~/.vnc/xstartup
vncserver :1 -localhost no -geometry=1920x1080
:1
是端口,最终tcp端口是此数字+5900 ,也就是1+5900=5901-localhost no
默认为yes
,设置成no
则可以非localhost
也可以连接vnc-geometry
设置分辨率firewall-cmd --add-port=15901/tcp
firewall-cmd --add-port=15901/tcp --permanent
格式:
ip地址:tcp端口号
示例:172.16.184.19:5901
这里的端口是tcp端口,假如你设置的是:1
,把这个数加5900就是最终结果。
也就是1+5900=5901
连接后,输入前面设置的vnc密码就可以进远程桌面了。
连接后,如果出现 黑屏,鼠标就是一个小方点。那么请稍等一会儿,有可能是桌面还在加载中。如果 等待超过30秒,还是黑屏,就有可能是你的配置不正常,请检查一下~/.vnc/xstartup
配置是不是正确。
或者重启一下服务试试:
vncserver -kill :1
vncserver :1 -localhost no -geometry=1920x1080
语言支持打开会闪退。
找日志发现:
Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
解决办法:
sudo /etc/init.d/dbus start