目录
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网卡的问题,而且不删除掉网卡重启都没用,只能删除;
centos 下 brctl 安装方法 yum install bridge-utils -y
4.创建自定义网络造成的问题
当前容器基于 自定义网络 docker-br0 创建的 创建命令如下
docker network create --subnet=172.171.0.0/24 docker-br0
某种原因 造成iptables出错
1.解决方法 删除所有dockers容器
docker rm -f `docker ps -aq`
2.删除自定义网络
docker network rm docker-br0
3.重新建立自定义网络
docker network create --subnet=172.171.0.0/24 docker-br0
4.再次创建docker容器 则可以通过ip正常访问