默认网桥(docker0)支持同主机容器间基于ip的互通,自动分配172.17.0.0/16子网地址,网关为172.17.0.1,所有未指定网络的容器默认接入;但不支持dns解析、ip易变、缺乏隔离,仅适用于临时测试,生产环境应使用自定义bridge网络替代。

Docker 默认的 bridge 网络(即 docker0 网桥)开箱即用,不需要额外配置就能让同主机上的容器基础互通,但仅限于 IP 层通信,不支持容器名解析,也不推荐用于生产环境。
默认网桥能做什么?
它由 Docker daemon 自动创建和管理,子网通常是 172.17.0.0/16,网关是 172.17.0.1。所有未指定 --network 的容器都会自动接入这个网络,彼此可通过分配到的 IP 地址直接通信。
怎么确认它在工作?
运行:
docker network ls
你会看到名为 bridge 的网络,状态为 local。再查一个容器的 IP:
docker run -d --name test1 nginx docker inspect test1 | grep IPAddress
比如得到 "IPAddress": "172.17.0.2",然后启动另一个容器并 ping 这个地址:
docker run -it --rm alpine ping -c 3 172.17.0.2
只要宿主机 iptables 没禁掉转发、容器没加 --network none,通常能通。
默认网桥的局限性
- 容器重启后 IP 会变,无法靠名字访问
- 不支持 DNS 解析(
ping test1会失败) - 子网固定,容易与其他本地网络冲突(比如公司内网也用
172.17.x.x) - 缺乏网络隔离能力,所有默认容器都在同一个广播域
如果只是临时测试或开发单机场景,用默认 bridge 就够了
但只要涉及多个服务协同、需要稳定访问入口,或者准备上生产,就该换成自定义 bridge 网络——它本质还是 bridge 模式,只是可控、可命名、可复用。
想升级成更可靠的互通方式?
- 创建带子网的自定义网络:
docker network create --subnet 192.168.50.0/24 --gateway 192.168.50.1 mynet
- 启动容器时显式指定:
docker run -d --name api --network mynet nginx docker run -it --network mynet alpine ping api
这时
api名字能被自动解析,IP 不用记,重启也不影响通信。
默认网桥不是不能用,而是不适合长期依赖。真正要“配置默认网桥”,其实不是去改 docker0(不建议手动碰),而是用自定义网络替代它——这才是 Docker 官方推荐的落地实践。











