【发布时间】:2021-10-14 15:32:41
【问题描述】:
我已经设置了 service_main stream 在套接字 127.0.0.1:6000 上登录
简化的 docker-compose.yml 看起来像这样:
version: "3"
networks:
some_network:
driver: bridge
ipam:
driver: default
config:
- subnet: 100.100.100.0/24
gateway: 100.100.100.1
services:
service_main:
image: someimage1
networks:
some_network:
ipv4_address: 100.100.100.2
service_listener:
image: someimage2
networks:
some_network:
ipv4_address: 100.100.100.21
entrypoint: some_app
command: listen 100.100.100.2:6000
我的假设是它应该可以工作,因为两个容器都属于一个网络。
但是我收到一个错误(来自 service_listener)100.100.100.2:6000 不可用
(我解释为该服务试图监听一些公共套接字而不是网络。)
我尝试了不同的方法,但没有深入了解:在 service_main 上公开/发布 6000 端口,或者将日志的套接字设置为 100.100.100.21:6000 并在 service_listener 中侦听 127.0.0.1:6000(也结束发布端口)。但没有任何效果。显然我不明白为什么。
在同一个网络中使用类似的方法 - powerdns 和 postgresql 工作正常 - 我在配置中告诉 powerdns db 主机位于 100.100.100.x 上并且它工作正常。
【问题讨论】:
-
listen命令是什么?如果某物设置了网络监听器,并且您需要配置其绑定或监听地址,则通常需要在 Docker 中为0.0.0.0。 -
(我建议删除 all 的
networks:块;Compose 将为您 create a network nameddefault并自动分配 IP 地址。Compose 服务名称service_main和 @ 987654328@ 可用作主机名。) -
@DavidMaze,只是抽象应用程序的抽象命令。您对 0.0.0.0 的评论很有帮助
标签: docker networking docker-compose