如何从主机向 docker 容器中的子套接字 运行 发送消息?
How to send messages to a sub socket running in docker container from host?
我在 N
端口 host
上有一个发布者 运行ning。
装入容器会很痛苦。
我有一个订户 运行在一个容器里。
问题是,如果我首先 运行 host
上的发布者,那么我无法在 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
错误。
我认为的问题是,当 docker 从容器向主机公开端口时,会以某种方式绑定到它们。所以没有其他人可以绑定到主机中的那个端口。
我可以在容器中做些其他事情 运行ning 发布者吗?
当您执行 N:N 时,端口与主机绑定良好。您可能有一个 运行 容器已经在使用这个端口。尝试 docker ps -a
看看是否有一个容器 运行 该端口。如果有,杀了它。
确保你的docker恶魔是运行--icc=true
(containers/network之间的交流)和docker0 网络适配器已成功添加到您的主机 iptables
配置(通常由 docker 参数 --iptables=true
).
然后 运行 您的容器 -p N
(不是 N:N
)。这意味着端口是 exposed 和 not mapped在主机端口上。
然后查找容器 ip 地址:
$ docker inspect publisher
现在联系您的订阅者不是通过 localhost
:5570
,而是通过 ip-adress
:5570
.
我在 N
端口 host
上有一个发布者 运行ning。
装入容器会很痛苦。
我有一个订户 运行在一个容器里。
问题是,如果我首先 运行 host
上的发布者,那么我无法在 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
错误。
我认为的问题是,当 docker 从容器向主机公开端口时,会以某种方式绑定到它们。所以没有其他人可以绑定到主机中的那个端口。
我可以在容器中做些其他事情 运行ning 发布者吗?
当您执行 N:N 时,端口与主机绑定良好。您可能有一个 运行 容器已经在使用这个端口。尝试 docker ps -a
看看是否有一个容器 运行 该端口。如果有,杀了它。
确保你的docker恶魔是运行--icc=true
(containers/network之间的交流)和docker0 网络适配器已成功添加到您的主机 iptables
配置(通常由 docker 参数 --iptables=true
).
然后 运行 您的容器 -p N
(不是 N:N
)。这意味着端口是 exposed 和 not mapped在主机端口上。
然后查找容器 ip 地址:
$ docker inspect publisher
现在联系您的订阅者不是通过 localhost
:5570
,而是通过 ip-adress
:5570
.