docker容器安装图形化

一、docker拉取镜像,并创建容器

1.这里我选用官方的centos7镜像(注意镜像是不含desktop的)

# docker pull centos

2.启动镜像创建并创建容器(关于各启动参数的意思 --name 是给容器起名字,方便调用 -p 是映射内外端口,这里映射了5901端口,也就是等下要运行的vncserver所需要的端口)

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

二、进入系统容器操作安装需要的组件

1.进入容器(由于我们给容器起了名字,所以我们可以直接定位进入容器,不需要再查看容器id)

# docker  exec -it centos-desktop-vnc bash     ### “centos-desktop-vnc” 是我们之前创建时给容器的名字

2.安装desktop
2.1先看一下有什么desktop可以装

# yum grouplist    ##会出现一个列表,根据自己的需求选择带desktop的安装

这里我选择安装GNOME Desktop

# yum groupinstall GNOME Desktop

2.2配置默认启动图形界面

#断开默认启动方式
# unlink  /etc/systemd/system/default.target  
/#创建图形启动方式为默认启动方式
# ln -sf  /lib/systemd/system/graphical.target   /etc/systemd/system/default.target   

3.安装 vnc server

 yum -y install tigervnc-server tigervnc-server-module 

三、配置软件

1.复制配置模板文件为vncserver@:1.service

 cp /lib/systemd/system/[email protected] /lib/systemd/system/vncserver@:1.service

2.修改配置文件

vim这个软件可能需要安装一下

yum install vim -y

开始编辑配置:

vim /lib/systemd/system/vncserver@:1.service

把< USER >替换成我们的用户名就可以了,由于docker是以root登入的,我们把< USER >改成root
改好如下:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking

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

 

3.设置vnc链接密码

 vncserver     #输入两次密码,完成密码设置

  

如果有view-only选项的话选n

4.重启容器并且更新systemctl

exit  # 退出容器
docker restart centos-desktop-vnc # 重启容器
docker  exec -it centos-desktop-vnc bash  #重新进入容器
systemctl daemon-reload #更新systemctl

  

如果 systemctl daemon-reload 和 systemctl start vncserver@:1.service 发生错误,可以尝试重启容器,并把
/lib/systemd/system/vncserver@:1.service 配置里的Type=forking改为Type=simple
5.启动vncserver@:1.service服务,并设置开机自启

systemctl start vncserver@:1.service && systemctl enable vncserver@:1.service

  

6.查看进程是否启动了
netstat -anp|grep 590   # 如果没有netstat这个命令,输入 yum install net-tools -y 进行安装 

7.配置防火墙
CentOS7默认的防火墙不是iptables,而是firewalle,

#添加5901端口
firewall-cmd --zone=public --add-port=5901/tcp
#重载 firewalle
 firewall-cmd --reload

  

猜你喜欢

转载自www.cnblogs.com/linuxxl/p/12029220.html
今日推荐