Runtime.getRuntime()。exec来自Docker进程内部的主机

时间:2017-01-27 21:57:26

标签: java docker

我有一个在Docker容器内运行的Java程序。该程序需要执行应由主机系统运行的shell命令,但只需调用Runtime.getRuntime().exec(...)在Docker容器内执行它(应该如此)。

有没有办法可以从容器内部启动进程,以便进程在外部运行?我怀疑exec命令应该通过Docker告诉它命令本身需要在主机上运行,​​但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

如何做到这一点的想法可以基于docker命令行客户端如何与docker服务进行通信。它只是一个客户端,它使用unix socket(即只是文件)来向服务传输命令。因此,您可以通过tcp连接1)主机上的服务(谷歌用于docker TCP套接字)2)可以使用docker实用程序使大量的docker主机与docker容器上的availdable一样,就像在Ubuntu上运行docker的那些参数< / p>

-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

使您可以在容器中执行docker实用程序,实际上所有命令都将在主机服务中完成