1.情况:
vm宿主机无法访问容器;
虚拟机curl localhost也无法访问;
虚拟机centOS8,docker版本:Version: 20.10.21
2.尝试
网上搜了一堆解决办法,首先排除端口映射问题:
端口映射正常;
然后检查内核版本和docker版本也没问题;
然后重启docker包括容器,kill进程什么都试过了还是无济于事;
最后终于找到解决方案了:
3.最终解决方案
systemctl stop docker # 停止docker 服务
pkill docker # 杀掉docker进程
iptables -t nat -F # 清理iptables
ip link set docker0 down # 停止docker0网卡
brctl delbr docker0 # 删除docker0网卡--重点!
systemctl start docker # 启动docker服务
最后证明果然是docker0网卡的问题,而且不删除掉网卡重启都没用,只能删除;
然后就会用到brctl这个工具,这个工具怎么yum都找不到,可以尝试手动安装:也很方便
#首先安装autoconf工具
yum install autoconf
#bridge-utils-1.6 源码下载,然后上传到服务器
https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.xz
#源码解压
tar -xvf bridge-utils-1.6.tar.xz
解压完以后进入 bridge-utils-1.6文件夹
#使用 autoconf 工具生成配置文件
autoconf
PS:autoconf工具在.ac文件目录下直接输入命令,不需要指定文件,,要是搞错了就只能删除文件夹重新解压一次(不懂这个工具的话);
#配置,生成makefile文件
./configure
#编译与安装
make
make install
#最后测试使用情况:
brctl show
最后重启docker以后再测试连接情况:
终于成功连上了!