Docker容器圖形界面顯示(運行GUI軟件)的配置方法

0.環境說明
Ubuntu 16.04
docker 1.35linux

1.Docker的「可視化」
Docker自己的工做模式是命令行的,由於主要的使用場景多是作服務器後端方面的比較多。
但有時候咱們會有在docker容器裏運行一些圖形界面的軟件,或者要調用攝像頭,輸出圖像等等一些需求,這個時候須要解決這個Docker 「可視化」的問題。
(這裏的「可視化」不是很容易搜到的可視化管理的方法)程序員

2.解決方案1—啓動容器時添加配置選項
林帆:Docker運行GUI軟件的方法docker

這篇文章裏介紹了Docker公司的程序員傑西·弗萊澤爾(Jessie Frazelle)展現的使用了圖形界面的鏡像的例子,Jessie也開源了她展現的docker 運行libreoffice軟件的代碼和使用方法。小程序

2.1 原理簡介
原文中講的比較詳細,原理並不複雜,我按照本身理解很淺顯地講一下。
原理上能夠把docker鏡像看作一臺沒配顯示器的電腦,程序能夠運行,可是沒地方顯示。
而linux目前的主流圖像界面服務X11又支持 客戶端/服務端(Client/Server)的工做模式
只要在容器啓動的時候,將 『unix:端口』或『主機名:端口』共享給docker,docker 就能夠經過端口找到顯示輸出的地方,和linux系統共用顯示後端

2.2 具體操做(顯示到本地顯示器)
1)首先,在主系統裏運行bash

$ sudo apt-get install x11-xserver-utils
$ xhost +

這兩句的做用是開放權限,容許全部用戶,固然包括docker,訪問X11 的顯示接口服務器

2)在啓動docker容器時,添加選項以下:tcp

-v /tmp/.X11-unix:/tmp/.X11-unix \           #共享本地unix端口
 -e DISPLAY=unix$DISPLAY \                    #修改環境變量DISPLAY
 -e GDK_SCALE \                               #我以爲這兩個是與顯示效果相關的環境變量,沒有細究
 -e GDK_DPI_SCALE \

最終的啓動命令就會長相似這樣測試

$ docker run -d \
  -v /etc/localtime:/etc/localtime:ro \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=unix$DISPLAY \
  -e GDK_SCALE \
  -e GDK_DPI_SCALE \
  --name libreoffice \
  jess/libreoffice

這樣啓動後的容器,運行有圖形界面的程序就能夠自由顯示,和在本地顯示同樣了。動畫

這樣操做已經十分方便了。須要注意的是,每次從新開機,須要在本機操做一次

xhost +

打開權限。應該有永久更改這個的辦法,不過我以爲不算麻煩。
原文中還有在遠程顯示的配置方法,我沒有試,就很少說了。

3.解決方案2—已經啓動的容器修改系統參數
參考文章
有的時候,咱們在已經啓動的容器裏作了一些事情,有了顯示圖像的須要,但從頭新啓動一個容器有點麻煩。
這時候能夠用上面博客裏講的方法實現圖形界面顯示,也還算方便。
思路上也是把主機和docker看作服務器和客戶端的關係,經過IP地址來映射顯示。

3.1 具體操做
1)使用 ifconfig 查看主機和docker的IP地址
例如:主機的IP爲 xxx
docker 的IP爲YYY
2)docker 中

export DISPLAY= XXX       #把環境變量映射到主機IP

3.)主機中

sudo gedit /etc/lightdm/lightdm.conf      #增長一行    xserver-allow-tcp=true
sudo systemctl restart lightdm          
xhost  +                #注意加號前應有空格

這樣配置就完成了,這是第一次配置的操做.
之後每次從新開機時,仍是要在主機裏運行一下 xhost +,在docker裏運行一下export DISPLAY= XXX 。
其實仍是挺麻煩的。
最關鍵的是,這種方式用的是IP地址,在系統沒聯網時,網卡就沒有分配的IP地址了,這種方法就行不通了。

4.怎樣測試可否顯示圖像界面
第二篇參考文章中用了一個顯示時鐘的小程序xclock
不過我在Ubuntu16.04的環境裏搜不到這個了,能安裝的叫xarclock,功能同樣
在docker中運行

sudo apt-get install xarclock       #安裝這個小程序
xarclock                      #運行,若是配置成功,會顯示出一個小鐘表動畫

做者:Codename-NC
來源:CSDN
原文:https://blog.csdn.net/ericcchen/article/details/79253416 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索