使用docker-compose部署时,如果有多个网络,只有第一个接口可以访问外部网络。
有没有什么办法可以在两个网络上都访问互联网? 尝试过多种创建网络的组合,包括带有自定义配置的外部桥接等...
更新 接受了larsks的答案后,对于eth1使用ip路由添加并运行tcpdump -i any,数据包正确地传入:
version: "3.9"
services:
speedtest:
build:
context: .
dockerfile: speedtest.Dockerfile
tty: true
networks:
- eth0
- eth1
networks:
eth0:
eth1:
在容器内运行例如 ping -I eth0 google.com
的命令可以正常工作。但是运行 ping -I eth1 google.com
命令会得到以下结果。
PING google.com (142.250.200.238) from 172.21.0.2 eth1: 56(84) bytes of data.
From c4d3b238f9a1 (172.21.0.2) icmp_seq=1 Destination Host Unreachable
From c4d3b238f9a1 (172.21.0.2) icmp_seq=2 Destination Host Unreachable
有没有什么办法可以在两个网络上都访问互联网? 尝试过多种创建网络的组合,包括带有自定义配置的外部桥接等...
更新 接受了larsks的答案后,对于eth1使用ip路由添加并运行tcpdump -i any,数据包正确地传入:
11:26:12.098918 eth1 Out IP 8077ec32b69d > dns.google: ICMP echo request, id 3, seq 1, length 64
11:26:12.184195 eth1 In IP dns.google > 8077ec32b69d: ICMP echo reply, id 3, seq 1, length 64
但仍然出现100%数据包丢失...
-I
仅影响将发送 ICMP Echo Req 数据包(Ping)的接口。无论如何,也许可以设置 NAT,因为 Docker 的内部 IP 是不可路由的。可能有一种特定于 Docker 的解决方案,但我对 Docker 不是特别熟悉。 - Yarin_007