docker ping不通宿主机的解决办法:1、修改daemon.json;2、关闭防火墙;3、修改sysctl.conf;4、重设网桥即可。

1、Docker网桥模式ping不通宿主机怎么办?

问题描述:

Docker网络模式分为四种,一般我们不设置时默认为bridge单桥模式,容器使用独立的network Namespace,并连接到docker0虚拟网卡中。通过docker0网桥以及Iptables nat表配置与宿主机通信。
此时在堡垒机上进行测试,利用busybox进行测试:

docker容器中无法ping通宿主机(网桥) - 图1

  • 测试网关<font style="color:rgb(61, 70, 77);">172.17.0.1</font>同样无法通

docker容器中无法ping通宿主机(网桥) - 图2

推测网桥存在问题

1. 重设网桥

1)安装bridge-utils

YUM:<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">yum install bridge-utils</font> RPM:https://centos.pkgs.org/7/centos-x86_64/bridge-utils-1.5-9.el7.x86_64.rpm.html docker容器中无法ping通宿主机(网桥) - 图3 ### 2)利用brctl show查看网桥,并分析 plain brctl show bridge name bridge id STP enabled interfaces br0 8000.000000000000 no docker0 8000.000000000000 no + 这里的br0是我后面添加的(忽略) docker容器中无法ping通宿主机(网桥) - 图4 利用docker network create [网桥名]指令新建网桥发现其生成的bridge id还是8000.0000000000,在新网桥上创建容器,再次查看并没有什么变化,说明很可能是网桥的问题。 再次测试,此时网桥ip172.17.0.1,容器ip172.0.0.2,发现宿主机能ping通网桥,但是无法连接容器,而容器无法连接网桥,无法连接宿主机,更别谈外网了,所以这里可以肯定是网桥出了问题。

3)问题解决

  1. 首先暂停docker服务
  1. systemctl stop docker
  1. 添加网桥
  1. brctl addbr br0
  1. 添加ip字段
  1. ip addr add 172.16.0.1/24 dev br0
  1. 启用网桥
  1. ip link set dev br0 up
  1. 查看网络br0

docker容器中无法ping通宿主机(网桥) - 图5

  1. 修改docker默认网桥
  1. vim /etc/docker/daemon.json
  2. "bridge":"br0"
  1. 重启docker
  1. systemctl start docker
  1. 使用brctl命令查看
  1. brctl show
  2. bridge name bridge id STP enabled interfaces
  3. br0 8000.000000000000 no
  4. docker0 8000.000000000000 no
  1. 启用容器,并使用brctl查看,并测试网络是否通
  1. docker run -it --name ts --rm busybox:1.28.4 sh

docker容器中无法ping通宿主机(网桥) - 图6

docker容器中无法ping通宿主机(网桥) - 图7


来源:https://www.php.cn/docker/486997.html#:~:text=docker%20ping%E4%B8%8D%E9%80%9A%E5%AE%BF%E4%B8%BB%E6%9C%BA%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%EF%BC%9A1%E3%80%81%E4%BF%AE%E6%94%B9daemon.json%EF%BC%9B2%E3%80%81%E5%85%B3%E9%97%AD%E9%98%B2%E7%81%AB%E5%A2%99%EF%BC%9B3%E3%80%81%E4%BF%AE%E6%94%B9sysctl.conf%EF%BC%9B4%E3%80%81%E9%87%8D%E8%AE%BE%E7%BD%91%E6%A1%A5%E5%8D%B3%E5%8F%AF%E3%80%82,%E6%9C%AC%E6%96%87%E6%93%8D%E4%BD%9C%E7%8E%AF%E5%A2%83%EF%BC%9Aubuntu16.04%E7%B3%BB%E7%BB%9F%E3%80%81Docker%2020.10.11%E3%80%81Dell%20G3%E7%94%B5%E8%84%91%E3%80%82