2017-03-08 39 views
1

我建立具有Maven和一些相關性的泊塢窗容器。然後它在容器中執行一個腳本。看來,其中一個依賴項需要Xserver才能工作。屏幕上沒有顯示任何內容,但似乎有必要並且無法避免。添加到的Xserver泊塢容器(主機是無頭)

我得到它的工作將在Dockerfile的ENV DISPLAY=x.x.x.x:0並將其連接到外部的Xserver和它的作品。但關鍵是要製作一個Docker自給式容器。

所以我需要一個X服務器添加到我的容器在必要Dockerfile增加。我希望Xserver只能由Docker容器本身訪問,而不能在外部訪問。

我的Dockerfile的FROMFROM ubuntu:15.04,這是不可改變的,因爲我的Dockerfile有很多東西取決於特定版本。

我讀過一些職位有關如何從泊塢窗容器連接到多克爾主機的Xserver的,像this。但是當我提出問題的標題時,Docker主機是無頭的,並沒有Xserver。

  • 這將是最小的apt-get包安裝到容器有一個Xserver?
  • 我想在我的Dockerfile中將需要像ENV DISPLAY=:0這樣的顯示環境var。它是否正確?
  • 是否需要在docker run命令中添加其他內容?

謝謝。

回答

2

您可以安裝和運行x11vnc您泊塢窗容器內。我將向您展示如何使它在無頭主機上運行並遠程連接它以運行X應用程序(例如xterm)。

Dockerfile:

FROM joprovost/docker-x11vnc 

RUN mkdir ~/.vnc && touch ~/.vnc/passwd 
RUN x11vnc -storepasswd "vncdocker" ~/.vnc/passwd 
EXPOSE 5900 
CMD ["/usr/bin/x11vnc", "-forever", "-usepw", "-create"] 

,並建立一個名爲docker imagevnc

docker build -t vnc . 

運行的容器,並記住端口映射到5900主機進行遠程連接(我使用--net=host這裏) :

docker run -d --name=vnc --net=host vnc 

現在你有一個x11vnc內運行的容器,下載一個VNC客戶端像realvnc並嘗試連接到<server_ip>:5900從本地,密碼爲vncdocker這是在Dockerfile設置,你會來遠程X屏幕與xterm開放。如果執行env並找到環境變量DISPLAY=:20

讓我們去到碼頭工人的容器,並嘗試打開另一個xterm

docker exec -it vnc bash 

內。然後容器執行以下命令:

DISPLAY=:20 xterm 

一個新的xterm窗口將在您的vnc client窗口中彈出。我想這就是你要運行你的應用程序的方式。

注意

  • 基礎VNC圖像是基於ubuntu 14,但我想包在ubuntu 16
  • 類似不要暴露5900如果你不想遠程連接到網絡,

希望這可以幫助:-)