Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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

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
Sockets 如何从主机向docker容器中运行的子套接字发送消息?_Sockets_Docker_Zeromq - Fatal编程技术网

Sockets 如何从主机向docker容器中运行的子套接字发送消息?

Sockets 如何从主机向docker容器中运行的子套接字发送消息?,sockets,docker,zeromq,Sockets,Docker,Zeromq,我有一个发布服务器运行在主机上端口上N 装进集装箱会很痛苦 我有一个订户在一个容器中运行 问题是,如果我首先在主机上运行发布服务器,则无法在docker run-d-p N:N publisher中导出端口(其中N是端口号) 若我首先启动container,那个么在publisher中就会有一个地址已经在使用中了 我认为问题在于,当docker以某种方式将端口从容器暴露到主机时,会绑定到它们。所以其他任何人都不能绑定到主机中的该端口 除了在容器中运行publisher,我还能做些什么吗 当您使用

我有一个发布服务器运行在
主机上
端口上
N

装进集装箱会很痛苦

我有一个订户在一个容器中运行

问题是,如果我首先在
主机上运行发布服务器
,则无法在
docker run-d-p N:N publisher
中导出端口(其中
N
是端口号)

若我首先启动container,那个么在publisher中就会有一个
地址已经在使用中了

我认为问题在于,当docker以某种方式将端口从容器暴露到主机时,会绑定到它们。所以其他任何人都不能绑定到主机中的该端口


除了在容器中运行publisher,我还能做些什么吗

当您使用N:N时,端口与主机绑定良好。您可能已经有一个正在运行的容器正在使用此端口。尝试
docker ps-a
查看是否有一个容器与该端口一起运行。如果有,杀了它

确保docker demon正在使用
--icc=true
(容器/网络之间的通信)运行,并且docker0网络适配器已成功添加到主机
iptables
配置(通常由docker参数
--iptables=true
完成)

然后使用
-pn
(而不是
N:N
)运行容器。这意味着端口是公开的,而未映射到主机端口上

然后查找容器ip地址:

$ docker inspect publisher

现在,请不要通过
本地主机
:5570
联系您的订阅者,而是通过
ip地址
:5570

它不是在容器内运行的发布者,而是订阅者。基本上,我认为唯一的方法不是从订户容器映射端口,而是了解容器内的主机ip并连接到它。但这是。。。我想这是错的。我想我应该把出版商的名字记下来。
$ docker inspect publisher