文章总结: 文章用通俗语言拆解Docker四大网络模式:Bridge默认单主机互通,自定义Bridge可解析容器名;Host共享宿主机网络,性能最高但端口冲突;Overlay借VXLAN隧道实现跨主机集群通信;None完全断网,适合离线或高安全场景。给出命令速查与Web+DB、Swarm集群两套实战模板,强调按场景选型即可。 综合评分: 82 文章分类: 云安全,安全建设,安全工具,WEB安全,安全培训
吃透Docker网络不用愁!四大核心模式
原创
小柳实验室 小柳实验室
小柳实验室
2026年1月26日 14:52 湖南
Docker把应用变成了可随便拼的“积木”,但想让这些积木互联互通、对接外网,甚至跨服务器协作,网络配置才是关键。
很多人用Docker卡壳,不是不会打包镜像,而是搞不懂网络模式——明明启动了容器,却连不上数据库;想跨主机部署,容器之间又互访失败。
今天就用大白话,把Docker四大核心网络模式(Bridge/Host/Overlay/None)讲透,每个模式都配实操步骤,新手也能跟着做,看完直接上手用!
一、先搞懂:Docker网络的核心逻辑
其实Docker网络的本质,就是给每个容器“划独立网络地盘”,这个地盘叫网络命名空间。
简单说,每个容器都有自己的“专属网卡、IP地址、路由表”,就像每家每户有独立门牌号和围墙,互相不干扰。Docker再通过虚拟网桥、虚拟网卡这些“工具”,打通容器之间、容器和外网的通道。
先记一个基础命令,查看当前Docker有哪些网络:
docker network ls
执行后会看到3个默认网络,这就是我们今天的主角:
NETWORK ID NAME DRIVER SCOPE
b32d6b8a5f43 bridge bridge local # 默认桥接网络
7d1e8d7c4a1d host host local # 主机网络
ee4c62b16a32 none null local # 无网络
二、Bridge模式:Docker默认的“常规操作”
这是Docker启动容器时的默认模式,也是最常用的场景,适合单台服务器上的多容器互联。
1. 到底啥是Bridge模式?
宿主机会自动建一个叫docker0的“虚拟网桥”,就像小区里的总交换机。所有没指定网络的容器,都会自动连到这个交换机上,从这里拿一个私有IP,还能通过交换机访问外网。
拓扑图一看就懂:
+------------------------+
| 宿主机(你的服务器) |
| |
| +-----------------+ |
| | docker0 网桥 |---|--- 连外网(NAT转发)
| +---+---------+---+ |
| | | |
| [虚拟网卡] [虚拟网卡] | 一头连网桥,一头连容器
| | | |
| 容器A 容器B |
+------------------------+
2. 实操:启动容器+测试通信
先启动两个Nginx容器,默认就用Bridge网络:
# 启动web1容器
docker run -d --name web1 nginx
# 启动web2容器
docker run -d --name web2 nginx
这里有个小坑:默认Bridge网络里,容器之间不能用名字访问,只能用IP。所以先查IP再测试:
# 第一步:查web2的IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web2
# 第二步:进入web1,ping web2的IP(比如查到是172.17.0.3)
docker exec -it web1 ping 172.17.0.3
能ping通就说明通信正常了。
3. 推荐玩法:自定义Bridge网络(必学)
默认Bridge的“不能用名字访问”太麻烦,自定义Bridge完美解决这个问题,还能更好地隔离环境,生产环境优先用!
# 1. 新建一个自定义Bridge网络(叫mydocker网)
docker network create mydocker
# 2. 启动容器时,指定加入这个网络
docker run -d --name app1 --network mydocker nginx
docker run -d --name app2 --network mydocker busybox sleep 3600
# 3. 测试:直接用容器名ping,不用记IP!
docker exec -it app1 ping app2
搞定!自定义网络会自动帮你解析容器名,多容器协作再也不用死记IP了。
三、Host模式:追求极致性能的“直连方案”
如果你的服务对网络速度要求极高,比如监控代理、VPN,就可以用Host模式。
1. 核心逻辑
Host模式下,容器不搞独立网络地盘了,直接“借用”宿主机的网络——容器的IP、端口和宿主机完全共用,没有任何转发损耗,性能拉满。
打个比方:Bridge模式是容器有自己的小房间,Host模式就是容器直接住客厅,和宿主机共享所有网络资源。
2. 优缺点一眼看清
✅ 优点:性能最好,配置简单,不用做端口映射 ❌ 缺点:隔离性差,容器和宿主机端口会冲突(比如容器用80端口,宿主机的Nginx就不能用80了)
3. 实操示例
# 启动Host模式的Nginx容器
docker run -d --name web-host --network host nginx
启动后,直接在浏览器输宿主机IP就能访问容器里的Nginx,不用加任何端口号。注意:这种模式下,-p端口映射命令是无效的。
四、Overlay模式:跨服务器通信的“神器”
如果你的容器要部署在多台服务器上(比如搭建Docker集群),Bridge模式就不够用了——不同服务器的容器不在一个网段,没法直接通信。
Overlay模式就是来解决这个问题的,它能在多台服务器之间搭一条“虚拟隧道”,让所有服务器的容器,像在同一台机器上一样互通。
1. 核心逻辑
基于VXLAN技术,把容器之间的通信数据打包,通过服务器的物理网络传输,最终实现“跨主机容器在同一虚拟子网”的效果。
简单拓扑图:
服务器A(Node1) 服务器B(Node2)
+-------------+ +-------------+
| 容器A |<---------->| 容器B |
|(10.0.0.2) | 虚拟隧道 |(10.0.0.3) |
+-------------+ +-------------+
2. 实操步骤(需启用Swarm集群)
Overlay网络需要依托Docker Swarm集群,步骤很简单:
# 1. 初始化Swarm集群(在主服务器执行,替换成你的服务器IP)
docker swarm init --advertise-addr 你的服务器IP
# 2. 新建Overlay网络(叫my-cluster-net)
docker network create -d overlay my-cluster-net
# 3. 启动集群服务,自动加入Overlay网络(3个副本)
docker service create --name web-cluster --network my-cluster-net --replicas 3 nginx
这样一来,不管容器分布在服务器A还是服务器B,都能互相访问,扩缩容也不影响通信。
五、None模式:完全隔离的“离线方案”
这种模式最简单,也最特殊——容器启动后,完全断开所有网络,只保留本地回环接口,既不能访问外网,也不能被其他容器访问。
实操示例
# 启动None模式容器,执行离线任务
docker run -d --name offline-task --network none alpine sleep 3600
适用场景
- • 离线数据处理、日志分析(不用联网也能跑)
- • 高安全需求(彻底隔离网络,避免被攻击)
- • 需要手动配置特殊网络的场景
六、四大模式对比表(快速选型)
怕记混?直接看这张表,按需选就行:
| 模式 | 隔离性 | 共享宿主机网络 | 支持容器名解析 | 跨主机 | 适用场景 | | — | — | — | — | — | — | | Bridge | 好 | 不共享 | 自定义网络支持 | 不支持 | 本地开发、单服务器多容器互联 | | Host | 差 | 完全共享 | 不支持 | 不支持 | 高性能服务、监控代理 | | Overlay | 好 | 不共享 | 支持 | 支持 | 集群部署、跨服务器通信 | | None | 极致好 | 不共享 | 不支持 | 不支持 | 离线任务、高安全需求 |
七、常用命令速查(收藏备用)
| 操作需求 | 命令 |
| — | — |
| 查看所有网络 | docker network ls |
| 查看网络详情(排错用) | docker network inspect 网络名/ID |
| 新建自定义网络 | docker network create 网络名 |
| 删除无用网络 | docker network rm 网络名/ID |
| 给容器绑定网络 | docker network connect 网络名 容器名 |
| 给容器解绑网络 | docker network disconnect 网络名 容器名 |
八、实战场景:直接套用
1. 本地部署Web+数据库(最常用)
需求:Web容器访问MySQL容器,不用记IP,环境隔离。
# 1. 新建自定义网络
docker network create app-net
# 2. 启动MySQL容器(加入网络,设密码)
docker run -d --name mysql --network app-net -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 3. 启动Web容器(加入网络,通过容器名访问MySQL)
docker run -d --name web --network app-net -e DB_HOST=mysql nginx
2. 跨服务器集群部署
需求:多服务器容器互通,支持动态扩缩容。
# 1. 所有服务器加入Swarm集群(主服务器init,其他服务器join)
# 2. 新建Overlay网络
docker network create -d overlay global-net
# 3. 启动全局服务,所有服务器各部署一个实例
docker service create --name app-global --network global-net --mode global nginx
九、总结+最佳实践
- 1. 本地开发/单服务器:优先用自定义Bridge网络,兼顾易用性和隔离性;
- 2. 追求极致性能:用Host网络,但一定要提前规划端口,避免冲突;
- 3. 多服务器集群:用Overlay网络,搭配Swarm/K8s实现无缝通信;
- 4. 离线/高安全:用None网络,减少不必要的网络暴露。
其实Docker网络不用死记硬背,核心就是“按场景选模式”——记住每个模式的适用场景,再结合实操练一遍,很快就能熟练掌握。
📬 关注我
推荐阅读
Redis主从复制深度解析:数据高可用与负载均衡的核心方案
运维必备|Zabbix 从 0 到 1 搭建企业级监控,告警自动喊你处理!
15分钟搞定业务宕机!运维必备排查指南(附实操命令)
SCP 与 rsync 到底怎么选?运维老鸟的文件传输避坑指南
效率拉满!Docker+Nginx 一站式部署 Java(JAR/WAR 通用),运维再也不加班
别再搞混Nginx和OpenResty!90%运维都踩过的坑,一文讲透核心差异
开发运维必备神器!HexHub 一站式搞定数据库、SSH、Docker 所有需求
网络排查神器!掌握 tcpdump,让网络故障无处遁形
MySQL 与 PostgreSQL:两个老对手的技术对决与选型指南
高性能存储刚需党必看!Docker 部署 RustFS,效率直接拉满
别再用第三方短链了!这个开源神器3分钟搭建专属短网址平台
Linux服务器重启后服务不自启?systemd实战指南 + 混沌演练验证
502 Bad Gateway 不是终点:一次生产事故背后的全链路复盘
备份做了,但能恢复吗?MySQL 数据恢复终极指南来了!
Firewalld 实战全攻略:从入门到精通,搭配 ipset 打造高效防护体系!
命令行也能玩转 WebSocket?别再用浏览器调了
MySQL 自动化备份脚本:安全、高效、免维护
Docker磁盘空间告急?3分钟教你彻底清理,释放大量空间!
Nginx 如何正确代理 SSE 与 WebSocket?一篇讲透长连接配置
【实战】打造超强Linux防火墙!10分钟提升服务器安全等级
一个不存在的用户,竟让MySQL 8.4当场崩溃?背后藏着甲骨文不敢明说的安全暗战!
无公网IP!NPS内网穿透终极指南,Docker一键部署
告别 Docker Hub 依赖!从零部署高可用 Harbor 私有镜像仓库
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:小柳实验室 小柳实验室 小柳实验室《吃透Docker网络不用愁!四大核心模式》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。




![[跟着静师傅学代码审计]itc中心管理服务器审计](/images/random/titlepic/10.jpg)





评论