ipv4跨主机容器通讯-docker【成功】
https://github.com/lemonhall/vagrant_docker/blob/main/README_ip_v6.md
将近20个小时的瞎折腾
结果最后其实非常简单

一台物理机,一个虚拟机(vagrant管理的fedora36),一个docker,一个物理的路由
1、拿地址
让Host宿主机要有一个与物理路由器同网段的地址,这样,它才能被路由器get到
方法是,桥接网络,vm里面的,桥接把我坑了4-5个小时的地方其实就一个
【vb的桥接,对wifi的那个nic支持不好,具体原因可以深化】
所以,你需要一个有限cable的网络nic去桥接
好了,这样host就拿到一个192.168.50.xxx的ip地址了,可以在路由器里看到它了
2、配路由
每一个Host机器上的容器,其实都可以有一个子网,比如172.18.xx.xx,255.255.0.0
那么,不需要去看网上大多数流传的那种静态路由的配置方式,因为那样的话,每台主机都要配静态路由表,太累了,路由器有这个功能的
如下,有几个主机,配置几个子网就行了,把host主机视为一个路由器就可以理解了

3、主机上侦听
sudo tcpdump -n -i any icmp
这一步卡了我很久
就看了好多文章,静下心来还看了很多docker默认的iptables的规则问题,等等等等
我的问题在于,清空了iptables之后,还是只能ping 成功 docker0的那个172.17.0.1
最后忽然用tcpdump一层层排查后才意识到,还是有什么东西挡着我
sudo systemctl disable --now firewalld
最后才明白,fedora和centos最新的版本做了一个新的防火墙,干掉就完了,内网搞这些干啥
4、最后成功

5、遗留
似乎访问外网不成功,稍后看一下怎么回事
===========
容器里面出不去
1、vagrant的网络配置里,其实可以把默认路由干掉
2、可以给docker0上加路由规则
sudo route add -n 0.0.0.0/24 gw 192.168.50.1 dev docker0
sudo route add default gw 192.168.50.1 docker0
给docker0加不上这个路由啊
算了
sudo route del default gw 10.0.2.2 eth0
删掉eth0那个碍事的路由也行
本来这个可以在vagranfile里解决的,行吧
然后容器网络正常了
邻家的の柠檬叔的最新日记 · · · · · · ( 全部 )
- 与她的告别信 (2人喜欢)
- 2025年2月21日AI多领域阅读列表汇总
- 触发搜索过于敏感问题 (1人喜欢)
- deepseek v3的指令服从性-作为相关度排序器 (1人喜欢)
- 《史上最大机器人🤖》
热门话题 · · · · · · ( 去话题广场 )
-
加载中...