Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图从';硕士';Java程序,并在主设备和从设备之间建立连接_Java_Docker_Port - Fatal编程技术网

试图从';硕士';Java程序,并在主设备和从设备之间建立连接

试图从';硕士';Java程序,并在主设备和从设备之间建立连接,java,docker,port,Java,Docker,Port,我有一个java程序master,它生成包含从属服务器的Docker容器 我的主机需要能够连接到Docker容器中的每个从机。现在,主机可以通过暴露端口并通过我的计算机的本地IP连接到端口9001上的从机,但这是一种不好的方法 有人知道正确的方法吗? 我的java程序通过在命令行中删除命令生成服务器,如下所示: executeCommand("docker run -p 192.168.195.1:9001:9001 " + dockerImageName); 这同时存在巨大的安全性和可伸缩性

我有一个java程序master,它生成包含从属服务器的Docker容器

我的主机需要能够连接到Docker容器中的每个从机。现在,主机可以通过暴露端口并通过我的计算机的本地IP连接到端口
9001
上的从机,但这是一种不好的方法

有人知道正确的方法吗? 我的java程序通过在命令行中删除命令生成服务器,如下所示:

executeCommand("docker run -p 192.168.195.1:9001:9001 " + dockerImageName);

这同时存在巨大的安全性和可伸缩性问题:不要这样做!(…假设我将
dockerImageName
设置为
-v/:/host-busybox-cat/host/etc/shadow
)我认为从任何编程语言控制Docker容器的最佳方法是通过Docker API()。一旦你有了Docker容器并运行起来,我看不出有什么理由把它们当作一个独立的API端点来对待。还有一个Java库可以与Docker API对话,这可以帮助你避免重新发明轮子:一个可能的“正确”方法是运行所有东西(主和从)在docker中,通过docker compose控制所有这些,而不是从主程序本身。如果有多个从属程序呢?您将无法为每个容器(9001)使用相同的端口(主机上)