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