Runtime.getRuntime()。exec在主机上从一个Docker进程中

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

有没有一种方法可以从容器内部启动一个进程,以便进程在外部运行? 我怀疑exec命令应该通过Docker来告诉它,命令本身需要在主机上运行,​​但我不知道如何做到这一点。

这个想法可以基于docker命令行客户端如何与docker服务进行通信。 它只是一个客户端,它使用Unix的套接字(即只是文件)stream命令的服务。 因此,你可以通过tcp连接1)在主机上的服务(谷歌的docker TCP套接字)2)可以使用docker工具使得docker主机上的卷可以在docker容器上运行,就像在Ubuntu上运行docker的参数一样

-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 0.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

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