Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
如何从docker容器内部访问特定的运行主机端口_Docker_Containers_Port_Host - Fatal编程技术网

如何从docker容器内部访问特定的运行主机端口

如何从docker容器内部访问特定的运行主机端口,docker,containers,port,host,Docker,Containers,Port,Host,我正在尝试从Docker容器中访问/共享主机上已运行的端口(7497)。我正在尝试与主机上的程序“对话”,该主机上有一个在7497上运行的套接字端口。这是在unix主机上设置的 当端口在主机上一直处于活动状态时,如何从docker仅公开用于双向操作的specefic端口?可能吗 我无法用示例-p7497:7497映射端口,因为我得到一个错误“bind:address ready in use”。此错误是正确的,因为该端口由主机中的程序使用 我获取访问权限的唯一方法是在启动容器时在run命令中使用

我正在尝试从Docker容器中访问/共享主机上已运行的端口(7497)。我正在尝试与主机上的程序“对话”,该主机上有一个在7497上运行的套接字端口。这是在unix主机上设置的

当端口在主机上一直处于活动状态时,如何从docker仅公开用于双向操作的specefic端口?可能吗

我无法用示例-p7497:7497映射端口,因为我得到一个错误“bind:address ready in use”。此错误是正确的,因为该端口由主机中的程序使用

我获取访问权限的唯一方法是在启动容器时在run命令中使用--network host--userns=host,例如:

nvidia-docker run -e HOME=/tmp -it --rm -v /home/kc/Deep_Learning:/projects --network host --userns=host tf_py3_gpu_science:1.4

但这样我就暴露了所有端口,为什么我担心一些安全问题。

尝试杀死另一个使用端口7497的进程。或者您可以使用其他端口代替7497,
-p 7498:7497
。然后从外部,您可以使用localhost:7498(Linux或Macos)嗨,我不确定我是否了解您。我无法终止主机上运行的进程,因为这是通信端口。我要说的是那个港口的通讯。我意识到这一定是我在docker上遗漏的基本问题,因为这个问题在网上被问了很多(许多帖子也在stackoverflow上),但我看不出有一个“简单”的解决方案。你不需要
-p
选项来连接容器;它只需要从外部连接到一个容器中。我想我也不明白这个问题。看起来您想从容器连接到主机上运行的东西。这不是一种常见的做法,但如果您仍然想这样做,您可以使用
host.docker.internal
hostname连接到您的docker主机。谢谢dave,但我需要双向通信。我正在将数据从主机上运行的软件加载到容器中的应用程序中,并将数据从容器加载到主机。如果我不开放港口,我就根本无法获得交通。