1. 程式人生 > >noVNC+VNCserver實現遠端訪問Docker容器桌面

noVNC+VNCserver實現遠端訪問Docker容器桌面

一、實驗環境

主機:Ubuntu16.04
目標機:docker容器
說明:在主機Ubuntu16.04中安裝docker,並虛擬出一臺Ubuntu容器,將該容器作為要遠端訪問的目標機

二、實現過程

1.在docker容器中安裝vnc4server,並啟動vnc4server服務:

apt-get update

apt-get install vnc4server

apt-get install net-tools  //安裝網路工具,用於檢視容器的IP地址

vnc4server  //這裡會提示輸入密碼,要記住

紅框可以看出啟動2號桌面服務:
紅框可以看出啟動2號桌面服務

2.在主機Ubuntu(或centOS7)中安裝並配置noVNC:

sudo apt-get install git
git clone https://github.com/kanaka/noVNC
cd noVNC

./utils/launch.sh --vnc 172.17.0.2:5901  
//172.17.0.2:為目標機docker容器的IP地址。      
//5901:為目標機啟動vnc4server時啟動的1號服務

vi vnc_token  //新建一個檔案,寫入要訪問的目標機的相關內容,格式為:           目標機名稱: IP:埠號

utils/websockify/websockify.py --web=./ --target-config vnc_tokens 6080    //執行上一步新建的內容。  **注意:執行該命令的終端不能關閉**

執行上述最後一條命令後結果(要切換到noVNC目錄下執行):
執行結果

3.測試網站:
http://192.168.43.227:6080/vnc_auto.html?websockify/?token=host1

說明:192.168.43.227:為主機Ubuntu的IP地址
host1:為vnc_token檔案中寫入的目標機名稱
測試結果:
測試結果

vnc_tokens檔案中內容格式:
vnc_tokens檔案

4.後續需求說明
若需要去掉使用者登入後輸入密碼的介面,需要修改以下部分:

vnc_auto.html檔案中:

form.innerHTML += '<input type=password size=10
id="password_input" class="noVNC_status" value="123456">'; form.onsubmit = true;

紅框內為修改部分:
修改

core/rbf.js檔案中:

this._rfb_password='123456';   //123456代表上面啟動vnc4server時輸入的密碼

紅框內為修改部分:
修改

說明:所有原始碼已上傳到筆者GitHub上,歡迎follow、star。感謝!!!