在docker搭建centos7远程桌面环境

一、拉取获取centos7镜像

docker pull centos:7

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

二、启动容器

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

docker run --name centos-desktop-vnc --privileged -d -p 5901:5901 --ulimit memlock=-1 -td centos:7 /usr/sbin/init

三、配置desktop环境

进入容器环境

docker exec -it centos-desktop-vnc bash

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

3.1、查看支持的环境

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

 yum grouplist

3.2、安装gnome环境

yum groupinstall GNOME Desktop -y

3.3、配置系统默认的启动模式

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

# 获取当前启动模式
systemctl get-default

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

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

四、配置vnc服务端

4.1、安装vnc server、vim、net-tools

yum -y install tigervnc-server tigervnc-server-module vim net-tools

4.2、配置vnc server

  • 复制配置文件模板
cp /lib/systemd/system/[email protected] /lib/systemd/system/vncserver@:1.service
  • 设置生效用户
    修改配置文件
vim /lib/systemd/system/vncserver\@\:1.service

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

[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密码
vncpasswd
  • 生效vnc配置
systemctl daemon-reload
  • 配置vnc开机启动
# 启动服务
systemctl start vncserver@:1
# 设为开机启动
systemctl enable vncserver@:1
  • 检查vnc server是否启动
netstat -lnpt|grep Xvnc

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


image.png

4.2、关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

五、vnc客户端发起连接

  • 下载vnc client
  • 连接vnc server


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


    image

    修改完色彩质量后效果会变好


    image.png

六、保存镜像

# 1、查询container id,出现的第一个字符串就是container id,我这里是4052d86631b0
docker ps -a | grep centos-desktop-vnc
# 2、提交作为本地镜像
docker commit 4052d86631b0 centos:7-vnc

你可能感兴趣的:(在docker搭建centos7远程桌面环境)