如何发送消息到主机上运行在docker容器中的子套接字?

我有一个发行商在端口N上的host上运行。

装入容器会很痛苦。

我有一个用户在一个容器内运行。

问题是,如果我第一次在host上运行发布者,那么我不能在docker run -d -p N:N publisher端口docker run -d -p N:N publisher (其中N是端口号)

 Error response from daemon: Cannot start container 41202025441bf02ad5c8cf2a85fb1f1bd04c2211e648f5ec446442f9af4a6274: Error starting userland proxy: listen tcp 0.0.0.0:5570: bind: address already in use 

如果我第一次启动容器,那么在发布者中将会有一个Address already in useAddress already in use错误。

我想这个问题是,当docker从容器暴露端口到主机在某种程度上绑定到他们。 所以没有人可以绑定到主机的端口。

我可以在容器中运行发布服务器吗?

确保--icc=true demon运行时使用--icc=true (容器/networking之间的通信),docker0networking适配器已成功添加到主机iptablesconfiguration中(通常由--iptables=true参数--iptables=true )。

然后用-p N (不是N:N )运行你的容器。 这意味着该端口是暴露的,不是在主机端口上映射。

然后查找容器的IP地址:

 $ docker inspect publisher 

现在不要通过localhost :5570联系你的用户,而是使用ip-adress :5570

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