2016-04-11 55 views
2

我在Docker中有一個安裝程序,用於在Ubuntu 14.04.03的Docker中運行GUI應用程序。使用X11轉發在Docker中運行多個GUI

使用具有必要參數的腳本文件啓動GUI應用程序。如果應用程序只有一個窗口,並且我可以通過執行X11轉發輕鬆查看結果,則設置工作正常。這是我用它來運行應用程序

sudo docker run -it \ 
-v /tmp/.X11-unix:/tmp/.X11-unix \ 
-e DISPLAY=$DISPLAY \ 
-w /Apps/ \ 
--rm appsdocker:v1 \ 
/bin/bash -c "./run_singleGUIapp.sh param1" 

的命令,但如果GUI有一個按鈕,點擊後會打開一個新的窗口,GUI應用程序無法響應和而返回到系統提示符後。

我試着運行這個link的例子,它解釋瞭如何在使用X11轉發的docker上運行firefox。一旦我搜索Docker中運行的firefox上的查詢,並嘗試「在新窗口中打開」任何後續命中,該應用程序的工作。我試圖假設它也會導致一個不響應的行爲,但似乎這不是一般情況,而只是與我的腳本一致。

據我所知,這是非常模糊的問題描述,因爲我無法透露應用程序和環境的細節。任何關於如何處理自己生成的GUI應用程序的指針都將不勝感激。

+0

首先,你不需要寫:'-v /tmp/.X11-unix:/tmp/ .X11-unix「和」-e DISPLAY = $ DISPLAY「。 '-v /tmp/.X11-unix \ -e DISPLAY'就足夠了。 –

+0

我已經描述了一種解決方案作爲答案。我也可能是另一個問題:第二個窗口將顯示在另一個環境中,其中沒有設置「DISPLAY」變量的值。嘗試編寫更多關於點擊此按鈕後發生的事情。它是否啓動一個新的應用程序? –

回答

0

它可能是X身份驗證的問題。

請嘗試以下操作。在主機:

  1. echo $DISPLAY和記數(像:4
  2. xauth list找到上面的數字的cookie,並複製整個線

內泊塢窗:

  1. xauth add <paste the copied line>

(如你不重視的容器,你可以把這個信號傳遞給你的run命令:/bin/bash -c "xauth add <cookie>; ./run_singleGUIapp.sh param1"