我有一个在Docker容器内运行的Java程序。该程序需要执行应由主机系统运行的shell命令,但只需调用Runtime.getRuntime().exec(...)
在Docker容器内执行它(应该如此)。
有没有办法可以从容器内部启动进程,以便进程在外部运行?我怀疑exec命令应该通过Docker告诉它命令本身需要在主机上运行,但我不知道该怎么做。
答案 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实用程序,实际上所有命令都将在主机服务中完成