前言
??對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
創建容器并映射SSH埠——客戶端
-
查看宿主機埠
??由于遠程訪問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中查看埠情況:

-
配置ubuntu:更新源
??用如下鏡像源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
-
裝文本編輯器vim備用
apt-get install vim
copyright ?意疏:https://blog.csdn.net/sinat_35907936/article/details/109273787
容器中配置SSH——連接
??安裝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
測驗容器SSH:xshell遠程登錄docker容器——連接
??先設定容器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
Xming遠程圖形化docker容器——服務端
??在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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/194855.html
標籤:AI
