我有一个在 Docker 容器内运行的 Java 程序。该程序需要执行一个应由主机系统运行的 shell 命令,但只需调用即可Runtime.getRuntime().exec(...)在 Docker 容器内执行它(理应如此)。
有没有办法可以从容器内部启动进程,以便该进程在外部运行?我怀疑 exec 命令应该通过 Docker 告诉它该命令本身需要在主机上运行,但我不知道该怎么做。
如何做到这一点的想法可以基于 docker 命令行客户端与 docker 服务的通信方式。它只是一个客户端,使用 unix 套接字(即只是文件)将命令流式传输到服务。因此,您可以通过 tcp 连接 1)主机上的服务(google for docker TCP socket)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 .7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
这使您可以在容器中执行 docker 实用程序,实际上所有命令都将在主机服务中完成
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |