docker容器安装图形桌面

在这里插入图片描述
最近突发奇想,想在docker中安装一个图形化远程桌面。可以用作远程调试,轻量级办公。其实主要为了玩,想探索一下docker到底能不能玩图形化程序。在docker中的图形化界面 ,到底能不能做简单的轻办公?

特点:

  • docker中可以使用
  • 体积小巧
  • 核心功能都要有,不能影响使用
  • 中文界面,支持中文输入法

视频教程

https://www.bilibili.com/video/BV1mL41177Av

版本信息

操作系统:Ubuntu 20.04.3 LTS 编写日期 : 2021-12-02 作者:ITKEY

没有特别说明的地方,都是以root权限执行。

创建一个CONTAINER

示例:

docker run --name vnc -it -p 15901:5901 ubuntu bash
  • 参数--name 设置CONTAINER名称,如果为空则随机生成
  • 参数-p 设置主机与容器的端口映射主机端口15901对应容器5901
  • 这里 ubuntu对应的是镜像名称
  • bash是你要执行的命令

ubuntu官方国内源

设置方法见:https://blog.csdn.net/lxyoucan/article/details/121691910

docker镜像unminimize

非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

安装

安装TigerVNC Server

apt install tigervnc-standalone-server -y

安装 xfce4精简版本

#精简安装
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

配置

设置vnc密码

我们这里以用户itkey为例(也可以换成其他用户),以下命令用itkey用户执行。
登录你想开启vnc远程桌面的用户。如下:

#新建用户
adduser itkey
#切换到用于vnc的用户
su itkey
#设置vnc连接密码
vncpasswd

执行结果如下:

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)?

~/.vnc/xstartup

以下命令用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

启动vnc服务

vncserver :1 -localhost no -geometry=1920x1080
  • :1是端口,最终tcp端口是此数字+5900 ,也就是1+5900=5901
  • -localhost no 默认为yes,设置成no则可以非localhost也可以连接vnc
  • -geometry 设置分辨率

主机防火墙放行15901端口

firewall-cmd --add-port=15901/tcp
firewall-cmd --add-port=15901/tcp --permanent

连接vnc服务

格式:

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

Guess you like

Origin blog.csdn.net/lxyoucan/article/details/121679346