docker单机bridge桥接本质是合理使用默认bridge模式或自定义网络;默认docker0网桥分配172.17.0.0/16地址,可通过daemon.json修改bip调整子网;推荐用docker network create创建用户定义bridge网络以支持dns和隔离;容器访问宿主机可使用--add-host=host.docker.internal:host-gateway。

在Linux系统中配置Docker单机网络的Bridge桥接,本质是理解并合理使用Docker默认的bridge网络模式,必要时自定义桥接网络或调整宿主机网桥行为。Docker安装后会自动创建一个名为docker0的虚拟网桥,并为容器分配私有IP(如172.17.0.0/16),这是最常用、开箱即用的桥接方式。
确认并查看默认docker0桥接状态
Docker启动后,docker0网桥会自动创建(除非禁用了--bridge=none)。可通过以下命令验证:
-
ip link show docker0—— 检查网桥是否存在且UP -
ip addr show docker0—— 查看其IP(通常是172.17.0.1)和子网 -
brctl show(需安装bridge-utils)—— 查看挂载的容器veth接口
若docker0不存在,可能是Docker服务未启动,或配置中显式禁用了桥接;可执行sudo systemctl start docker启动服务。
修改docker0网桥的IP与子网范围
默认172.17.0.0/16可能与内网冲突。可在Docker daemon配置中指定新子网:
- 编辑
/etc/docker/daemon.json(若不存在则新建):
{
"bip": "192.168.100.1/24",
"fixed-cidr": "192.168.100.0/25"
}
其中bip设定docker0的IP和掩码,fixed-cidr限制容器IP分配范围(可选)。保存后执行:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
sudo systemctl restart docker- 重启后旧容器网络失效,需重新运行容器(新容器将使用新网段)
创建自定义bridge网络(推荐替代docker0)
相比直接修改docker0,更推荐用docker network create建立用户定义桥接网络,它支持DNS解析、容器间通过名称通信,且隔离性更好:
docker network create --driver bridge --subnet=10.10.20.0/24 --gateway=10.10.20.1 mybridge- 运行容器时指定:
docker run --network=mybridge -it nginx - 该网络默认启用容器互通与内建DNS,无需额外配置iptables或host映射
注意:用户定义bridge网络不依赖docker0,也不受其影响,是生产环境的标准做法。
让容器访问宿主机网络(反向桥接需求)
有时需要容器内能稳定访问宿主机服务(如宿主机上的数据库)。由于docker0网桥本身已路由到宿主机,通常只需:
- 容器中用
host.docker.internal(Docker Desktop可用,Linux需手动配置) - Linux下更可靠的方式:在启动容器时添加
--add-host=host.docker.internal:host-gateway - 或直接使用宿主机真实IP(非127.0.0.1),确保该IP在容器路由表中可达(一般默认可达)
如宿主机防火墙开启(如ufw),还需放行对应端口(例如允许10.10.20.0/24访问22、3306等)。










