docker - 使用 docker 中的桥接网络将服务绑定到特定接口时连接被拒绝
问题描述
这是我的码头工人撰写:
version: '3.1'
services:
service1:
image: alpine/socat
command: TCP-LISTEN:9999,bind=127.16.1.10 SYSTEM:"echo lol"
networks:
network1:
ipv4_address: 172.16.1.10
service2:
image: alpine/socat
entrypoint: ''
command: sh -c 'sleep 2 && ping -c 1 172.16.1.10 && socat - TCP4:172.16.1.10:9999'
depends_on:
- service1
networks:
- network1
networks:
network1:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.1.0/24
两个服务共享network1
网络,service1
获取 ip 172.16.1.10 并且 socat 绑定到这个 ip。
如果我运行:
$ docker-compose run service2
Creating network "docker_network1" with driver "bridge"
Creating docker_service1_1 ... done
PING 172.16.1.10 (172.16.1.10): 56 data bytes
64 bytes from 172.16.1.10: seq=0 ttl=64 time=0.197 ms
--- 172.16.1.10 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.197/0.197/0.197 ms
2020/06/07 16:06:15 socat[1] E connect(5, AF=2 172.16.1.10:9999, 16): Connection refused
Socat
不接受连接。
如果我将绑定更改为 0.0.0.0,它可以工作,但我不想绑定到所有接口,我为此目的使用网络,如果我不能在特定接口上绑定我的服务,这是没有意义的。
在 Docker 中是不可能的,还是我做错了?
解决方案
推荐阅读
- python - .append() 添加 2 个值并删除 1 个先前的值
- vba - 覆盖损坏的数据库文件的含义
- jquery - JqGrid editrules number true 不起作用
- python - 如何在进入屏幕之前重置 ToggleButton 状态?
- java - 从 csv 文件读取时,仅从 ArrayList 中丢失了第一项
- java - 如何在 Java 中将日期格式转换为不同的模式
- r - 尝试在闪亮的 dateRange() 输入中传递日期时,要写入的文本必须是长度为 1 的字符向量
- javascript - 提交表单后如何刷新页面?
- python - 使用python在新列中连接和写入值
- xamarin.forms - 适用于 Xamarin 表单的 GoogleAnalytics