2017-01-27 25 views
3

我有一個在Docker容器內部運行的Java程序。這個程序需要執行一個應該由主機系統運行的shell命令,但只需調用Runtime.getRuntime().exec(...)就可以在Docker容器內執行它(應該是這樣)。Runter.getRuntime()。exec在主機上來自Docker進程

有沒有一種方法可以從容器內啓動一個進程,以便進程在外面運行?我懷疑exec命令應該通過Docker告訴它命令本身需要在主機上運行,​​但我不知道該怎麼做。

+1

我做我不確定這是否可能。碼頭工人的重點是將服務與對方隔離開來; docker pod應該沒有其超級的背景,除了顯式傳遞給它的資源外(我可能是錯的)。 –

+0

我同意馬特,實際上任何在容器中運行的進程實際上運行在不同的用戶主機上。我敢打賭,你可以通過在容器中展示端口並將其映射到主機上來實現​​你的目標。 – GauravJ

+0

如果你向我們解釋你想要做什麼,我們會盡力幫助你找到另一種方法。 –

回答

0

想法如何做到這一點可以基於docker命令行客戶端如何與docker服務進行通信。它只是一個客戶端,它使用unix套接字(即只是文件)將命令流式傳輸到服務。因此,您可以通過tcp連接1)主機上的服務(谷歌的docker TCP套接字)2)可以使用docker實用工具創建多個docker主機,以使它們在docker容器上可用,就像Docker在Ubuntu上運行的參數

-v /var/run/docker.sock:/var/run/docker.sock -v/usr/bin/docker:/ usr/bin/docker -v/usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

,使你能夠在exectude集裝箱碼頭工人效用,實際上所有的命令將在主機服務

相關問題