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/vncserver@.service /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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM