如何发送消息到主机上运行在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 use
的Address already in use
错误。
我想这个问题是,当docker从容器暴露端口到主机在某种程度上绑定到他们。 所以没有人可以绑定到主机的端口。
我可以在容器中运行发布服务器吗?
确保--icc=true
demon运行时使用--icc=true
(容器/networking之间的通信),docker0networking适配器已成功添加到主机iptables
configuration中(通常由--iptables=true
参数--iptables=true
)。
然后用-p N
(不是N:N
)运行你的容器。 这意味着该端口是暴露的,而不是在主机端口上映射。
然后查找容器的IP地址:
$ docker inspect publisher
现在不要通过localhost
:5570
联系你的用户,而是使用ip-adress
:5570
。
当你做N:N的时候,端口和主机绑定的很好。 您可能有一个正在运行的容器已经使用此端口。 尝试docker ps -a
来查看是否有一个容器与该端口一起运行。 如果一个,杀死它。