一、拉取获取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/vncserver@.service /lib/systemd/system/vncserver@:1.service
- 设置生效用户
修改配置文件
vim /lib/systemd/system/vncserver\@\:1.service
将配置文件的<USER>修改为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
出现下图结果说明启动成功
4.2、关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld
五、vnc客户端发起连接
- 下载vnc client
-
连接vnc server
-
修改色彩质量
初次连接上去可以看到桌面的色彩很模糊
解决办法是在建立好的远程连接点右键,选择 Properties,再选择 Options 选项卡,在 General 下面的 Picture quality 选择 High,保存。然后就可以看到图象变清晰了。
修改完色彩质量后效果会变好
六、保存镜像
# 1、查询container id,出现的第一个字符串就是container id,我这里是4052d86631b0
docker ps -a | grep centos-desktop-vnc
# 2、提交作为本地镜像
docker commit 4052d86631b0 centos:7-vnc