我有一个在Docker容器中运行的Java程序。该程序需要执行一个外壳命令,该命令应该由主机系统运行,但只需调用Runtime.getRuntime().exec(...)
就会在Docker容器中执行该命令(正如它应该执行的那样)。
有没有一种方法可以从容器内部启动一个进程,使该进程在外部运行?我怀疑exec命令应该通过Docker告诉它命令本身需要在主机上运行,但我不确定如何做到这一点。
发布于 2017-12-15 08:01:14
如何做到这一点可以基于docker comand line client与docker service的通信方式。它只是一个客户端,使用unix套接字(即只是文件)将命令流式传输到服务。因此,您可以通过tcp连接1)主机上的服务(google for docker TCP socket) 2)可以使用docker实用程序制作大量docker主机,使它们在docker容器上可用,就像在Ubuntu上运行docker的那些参数一样
/usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 :/var/ -v /docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v docker
这使您可以在容器中执行docker实用程序,实际上所有命令都将在主机服务中完成
https://stackoverflow.com/questions/41903694
复制相似问题