在Docker搭建centos7远程桌面环境

2021-11-29 10:38:15 浏览数 (1)

拉取获取centos7镜像

代码语言:javascript复制
docker pull centos:7

可以从https://hub.docker.com/_/centos?tab=tags查询拉取需要的镜像版本

启动容器

指定容器的名称为centos-desktop-vnc,并暴露宿主机的5901来连接vnc

代码语言:javascript复制
docker run --name centos-desktop-vnc --privileged -d -p 5901:5901 --ulimit memlock=-1 -td centos:7 /usr/sbin/init

配置desktop环境

进入容器环境

代码语言:javascript复制
docker exec -it centos-desktop-vnc bash

默认的镜像不带desktop环境,需要手动安装

查看支持的环境

会出现很多结果,我们这里选择的是gnome环境

代码语言:javascript复制
yum grouplist

安装gnome环境

代码语言:javascript复制
yum groupinstall GNOME Desktop -y

配置系统默认的启动模式

我们这里需要设置启动模式为图形化

代码语言:javascript复制
# 获取当前启动模式
systemctl get-default

# 修改启动模式为图形化
systemctl set-default graphical.target

# 修改启动模式为命令行
systemctl set-default multi-user.target

配置vnc服务端

安装vnc server、vim、net-tools

代码语言:javascript复制
yum -y install tigervnc-server tigervnc-server-module vim net-tools

配置vnc server

复制配置文件模板
代码语言:javascript复制
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
设置生效用户-修改配置文件
代码语言:javascript复制
vim /lib/systemd/system/vncserver@:1.service

将配置文件的修改为root,由于root的home路径是/root,不是/home/root,因此注意修改PIDFILE的路径 改好之后如下

代码语言:javascript复制
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
修改vnc server密码
代码语言:javascript复制
vncpasswd
生效vnc配置
代码语言:javascript复制
systemctl daemon-reload
配置vnc开机启动
代码语言:javascript复制
# 启动服务
systemctl start vncserver@:1
# 设为开机启动
systemctl enable vncserver@:1
检查vnc server是否启动
代码语言:javascript复制
netstat -lnpt|grep Xvnc

出现下图结果说明启动成功

代码语言:javascript复制
[root@011ff517ebf7 /]# netstat -lnpt|grep Xvnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      4658/Xvnc           
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      4658/Xvnc           
tcp6       0      0 :::5901                 :::*                    LISTEN      4658/Xvnc           
tcp6       0      0 :::6001                 :::*                    LISTEN      4658/Xvnc           

关闭防火墙

代码语言:javascript复制
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

vnc客户端发起连接

下载vnc client 连接vnc server
修改色彩质量

初次连接上去可以看到桌面的色彩很模糊 解决办法是在建立好的远程连接点右键,选择 Properties,再选择 Options 选项卡,在 General 下面的 Picture quality 选择 High,保存。然后就可以看到图象变清晰了。

保存镜像

代码语言:javascript复制
# 1、查询container id,出现的第一个字符串就是container id,我这里是011ff517ebf7
docker ps -a | grep centos-desktop-vnc
# 2、提交作为本地镜像
docker commit 011ff517ebf7 centos:7-vnc

中文安装

查看当前字符集

代码语言:javascript复制
$ echo $LANG
en_US.UTF-8

安装字符集

使用locale命令看看当前系统所使用的字符集

代码语言:javascript复制
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

查看系统是否安装中文字符集支持

代码语言:javascript复制
# locale -a | grep CN
bo_CN
bo_CN.utf8
ug_CN
ug_CN.utf8
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

若没有执行以下命令进行安装

代码语言:javascript复制
yum install -y kde-l10n-Chinese
yum reinstall -y glibc-common

#定义字符集
localedef -c -f UTF-8 -i zh_CN zh_CN.UFT-8
#确认载入成功
locale -a

修改系统字符集

修改系统字符集的配置文件:

代码语言:javascript复制
# echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
# source /etc/locale.conf

验证字符集修改

代码语言:javascript复制
# echo $LANG
zh_CN.UTF-8

# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2021/11/28 13:44

0 人点赞