對docker容器中軟體的操作,是基於命令列的,這就導致了習慣圖形化介面的人比較難以使用docker,而它又是一個神器,所以很難受。一般情況下,可以給容器安裝一個桌面環境,然後用類似VNC的方法去遠端存取它。但是容器在伺服器上時,我們大多數時候並不希望給它安裝桌面環境,如果有程式需要操作圖形介面時,多用X視窗系統,將該軟體的圖形介面轉移到遠端伺服器端顯示。X是一種協定,當前版本為11,俗稱X11。X視窗系統由使用者端和伺服器端組成,伺服器端X Server負責圖形顯示,而使用者端庫X Client輸出要顯示的內容。使用者端和伺服器端用SSH協定連線。對docker容器而言,docker容器就是使用者端,安裝Xming和shell的主機就是伺服器端。Xming可以對docker容器中的圖形化軟體遠端進行圖形介面互動(只有軟體圖形介面,不像遠端桌面是一個完整的圖形化環境)。安裝過程中踩了很多坑,故記錄在此,供大家參考。
有圖形介面的軟體:FSL(由於筆者要用FSL,其實隨便選個有圖形化介面軟體就可以,如gedit)
宿主機作業系統:win10pro
工具1:Xming
工具2:xshell
工具3:win10 powershell
筆者設定好的容器映象:https://pan.baidu.com/s/1KODZC1-Qx8Emo2diw-G2yw yue2
docker原理與基本操作見:Doker入門一條龍
docker下FSL非圖形化安裝見:docker下安裝FSL,實現頭皮剝離
注:筆者的使用者端和伺服器端在同一臺主機上。原創不易,轉載請註明出處。
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
由於遠端存取docker容器時,是通過宿主機的埠來存取的(記住它,很重要),所以需要先分配宿主機的埠給docker容器。先檢視宿主機被使用的埠,選一個沒有被佔用到的。powershell中輸入:
netstat -a
SSH預設埠是22,所以將宿主機的某空閒埠對映到容器的埠22,筆者選的50002。此時外部存取宿主機50002埠,就相當於在存取容器的22埠。
docker pull ubuntu:latest
docker run -it -p 50002:22 --name ubuntu_fsl_disp -v /d/docker/ubuntu_fsl_disp:/shared_data ubuntu bash
docker GUI中檢視埠情況:
用如下映象源sources.list
替換/etc/apt/sources.list
,然後執行:
apt-get update
sources.list
# 163源 for ubuntu 2020.04
deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
apt-get install vim
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
安裝SSH server
apt-get install openssh-server
修改sshd_config,開放22埠,並允許密碼登入
echo "Port 22">>/etc/ssh/sshd_config
echo "PermitRootLogin yes">>/etc/ssh/sshd_config
啟動ssh服務
service ssh start
檢視ssh狀態
service ssh status
ssh自啟,輸入以下命令有問題,按照提示操作也沒有解決,暫時採用手動啟動。
systemctl enable ssh
先設定容器root使用者密碼,沒有密碼外部無法登陸。
passwd
檢視22埠是否處於監聽狀態。
netstat -ap | grep 22
若不是,service ssh restart
重新啟動一下SSH
另開一個powershell,檢視宿主機IP地址。
ipconfig
筆者用的無線網:宿主機IP為192.168.1.104。宿主機IP即為docker容器IP。
開啟xshell,新建一個連線。宿主機IP即為docker容器IP,宿主機的50002埠即為容器的22埠。故SSH連線引數如下。注意修改埠號。
連線建好之後,雙擊連線名啟動連線。然後輸入使用者名稱:root,加上上面設定的密碼便可遠端登入到容器裡。
連線結果:到此SSH連線成功。
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
在win10上裝好Xming,要勾選產生如下的快捷方式。
先開啟Xlaunch,進行設定。除了圖中框出的,其他都可以是預設選項。如果全部預設選項,顯示時可能會出錯:No protocol specified。設定完成後再開啟Xming,注意順序。
通過xshell遠端向容器中裝FSL(用不到FSL的朋友,安裝gedit即可)
apt-get install fsl
設定fsl環境變數
echo ". /etc/fsl/fsl.sh" >>/etc/bash.bashrc
xshell上斷開SSH連線,再重新連線。鍵入:
fsl
將顯示:DISPLAY is not set. Please set your DISPLAY environment variable!,因為此時使用者端沒有輸出,即還沒有為DISPLAY環境變數賦值(DISPLAY environment variable)。用以下兩行程式碼賦值並檢視環境變數。
export DISPLAY=192.168.1.104:0.0
echo $DISPLAY
賦值完成後,再次鍵入fsl(或者gedit),回車,奇蹟出現了,fsl的互動介面清晰的呈現在我們眼前。X11,真的是一個大神器。
如果出現以下錯誤,請先關掉Xming,然後再重新設定Xlaunch,最後再開啟Xming。
application-specific initialization failed: couldn’t connect to display 「192.168.1.104:0.0」
No protocol specified
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
匯出我們設定好的使用者端容器成映象,分享給朋友,他們就有了我們設定的使用者端環境。
docker export -o d:/docker/ubuntu_fsl_x11.tar ubuntu_fsl_disp
再次使用時,只需匯入映象,然後執行映象,就可以得到上述所有的使用者端設定。
docker import d:/docker/ubuntu_fsl_X11.tar ubuntu_fsl_x11
docker run -it -p 50003:22 --name ubuntu_fsl_x11 -v /d/docker/ubuntu_fsl_x11:/shared_data ubuntu_fsl_x11 bash
由於SSH自啟沒有設定成功,所以需要重新啟動SSH服務
service ssh start
service ssh status
伺服器端圖形化顯示操作見上一節。
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
https://www.linuxprobe.com/putty-xming-oracle.html
https://blog.csdn.net/qq_16093937/article/details/83269106
https://blog.csdn.net/weixin_34355559/article/details/86388903
copyright ©意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787