docker-display-PC
Docker本身的工作模式是命令行的偏友,但是如果運(yùn)行在docker中的應(yīng)用需要顯示圖形界面如何能實(shí)現(xiàn)呢街立?
可以通過(guò)在宿主機(jī)安裝xserver捷犹,將docker容器視為客戶端乌昔,通過(guò)網(wǎng)絡(luò)或掛載的方式就可以實(shí)現(xiàn)將需要顯示的圖像顯示在宿主機(jī)顯示器雷逆。
1.網(wǎng)絡(luò)方式(此方式也可以用于兩主機(jī)間)
A.在宿主機(jī)
查看宿主機(jī)IP
$ ifconfig ##假設(shè)為xxx.xxx.xxx.xx
查看當(dāng)前顯示的環(huán)境變量值
$ echo $DISPLAY (要在顯示屏查看,其他ssh終端不行) ##假設(shè)為:0
或通過(guò)socket文件分析:
$ ll /tmp/.X11-unix/ ##假設(shè)為X0= ---> :0
安裝xserver
$ sudo apt install x11-xserver-utils
$ sudo vim /etc/lightdm/lightdm.conf
增加許可網(wǎng)絡(luò)連接
[SeatDefaults]
xserver-allow-tcp=true
重啟xserver
$ sudo systemctl restart lightdm
許可所有用戶都可訪問(wèn)xserver
xhost +
B.在docker 容器內(nèi)
export DISPLAY=xxx.xxx.xxx.xx:0
注意:環(huán)境變量設(shè)置需要每次進(jìn)docker設(shè)置粟矿,可以寫(xiě)在:/etc/bash.bashrc 文件中锤窑,避免每次進(jìn)終端時(shí)設(shè)置
2.掛載方式
掛載方式是在使用image創(chuàng)建docker容器時(shí),通過(guò)-v參數(shù)設(shè)置docker內(nèi)外路徑掛載嚷炉,使顯示xserver設(shè)備的socket文件在docker內(nèi)也可以訪問(wèn)。并通過(guò)-e參數(shù)設(shè)置docker內(nèi)的DISPLAY參數(shù)和宿主機(jī)一致探橱。
A.在宿主機(jī)
查看宿主機(jī)IP
$ ifconfig ##假設(shè)為xxx.xxx.xxx.xx
查看當(dāng)前顯示的環(huán)境變量值
$ echo $DISPLAY (要在顯示屏查看申屹,其他ssh終端不行) ##假設(shè)為:0
或通過(guò)socket文件分析:
$ ll /tmp/.X11-unix/ ##假設(shè)為X0= ---> :0
安裝xserver
$ sudo apt install x11-xserver-utils
許可所有用戶都可訪問(wèn)xserver
xhost +
B.在docker 容器創(chuàng)建時(shí)
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=:0
例如:
docker run -itd --name 容器名 -h 容器主機(jī)名 --privileged \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=:0 鏡像名或id /bin/bash
3.驗(yàn)證:
使用帶有界面功能的時(shí)鐘軟件嘗試
在docker容器中:
$ sudo apt-get install xarclock
$ xarclock
應(yīng)該可以看到xserver端顯示器顯示時(shí)鐘界面。
參考文章:
https://www.csdn.net/article/2015-07-30/2825340
https://blog.csdn.net/wzw_mzm/article/details/70916202
分屏情況設(shè)置主副及位置
查看顯示器信息:
fdm@fdm-OptiPlex-780:~$ xrandr
設(shè)置主顯示器
fdm@fdm-OptiPlex-780:~$ xrandr --output HDMI1 --auto --primary
設(shè)置副顯示器在主顯示器右邊
fdm@fdm-OptiPlex-780:~$ xrandr --output VGA1 --right-of HDMI1 --auto