【架构实战】Docker容器网络模型详解

张开发
2026/4/17 10:15:40 15 分钟阅读

分享文章

【架构实战】Docker容器网络模型详解
一、Docker网络概述Docker容器网络是云原生架构的基础网络模型Bridge桥接模式Host主机模式Overlay覆盖网络MacvlanNone二、Bridge网络1. 原理┌─────────────┐ ┌─────────────┐ │ Container │ │ Container │ │ nginx:80 │ │ mysql:3306 │ └──────┬──────┘ └──────┬──────┘ │ │ │ 172.17.0.2 │ 172.17.0.3 │ │ ┌──────┴──────────────────┴──────┐ │ docker0 bridge │ │ 172.17.0.1 │ └──────────────┬────────────────┘ │ ┌──────┴──────┐ │ Host NIC │ │ 192.168.1.100│ └─────────────┘2. 使用# 创建网络dockernetwork create my-bridge# 运行容器指定网络dockerrun-d--nameweb--networkmy-bridge nginx# 查看网络dockernetwork inspect my-bridge# 容器间通信dockerexec-itwebpingmysql3. 端口映射# 映射端口dockerrun-d-p8080:80 nginx# 随机端口dockerrun-d-Pnginx# 指定IP和端口dockerrun-d-p127.0.0.1:8080:80 nginx三、Host网络1. 原理容器直接使用主机网络栈# 使用host网络dockerrun-d--networkhostnginx2. 适用场景性能敏感场景需要使用主机端口网络调试四、Overlay网络1. 原理跨主机容器通信┌─────────────────┐ ┌─────────────────┐ │ Host A │ │ Host B │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ Container │ │ │ │ Container │ │ │ │172.18.0.2 │ │ │ │172.18.0.3 │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │ │ │ │ │ ┌─────┴─────┐ │ │ ┌─────┴─────┐ │ │ │ overlay │ │◄────┼─►│ overlay │ │ │ └───────────┘ │ │ └───────────┘ │ └─────────────────┘ └─────────────────┘2. 创建Overlay网络# 初始化Swarmdockerswarm init# 创建overlay网络dockernetwork create-doverlay my-overlay# 运行服务dockerservicecreate--networkmy-overlay nginx五、Macvlan网络1. 原理容器直接获取物理网络MAC地址# 创建macvlan网络dockernetwork create-dmacvlan\--subnet192.168.1.0/24\--gateway192.168.1.1\-oparenteth0 my-macvlan# 运行容器dockerrun-d--networkmy-macvlan nginx2. 适用场景需直接暴露容器IP旧应用迁移网络隔离六、网络隔离1. 网络隔离# 创建隔离网络dockernetwork create--internalbackend# 只有内部网络的容器dockerrun-d--networkbackend mysql2. DNS管理# docker-compose.ymlservices:web:image:nginxnetworks:-frontenddb:image:mysqlnetworks:-backendnetworks:frontend:backend:七、常用命令# 列出网络dockernetworkls# 查看网络详情dockernetwork inspect bridge# 删除未使用的网络dockernetwork prune# 连接容器到网络dockernetwork connect my-network container# 断开容器网络dockernetwork disconnect my-network container八、总结Docker网络模型选择Bridge默认模式适合单主机Host高性能直接使用主机网络Overlay跨主机通信Swarm/K8sMacvlan需要独立IP最佳实践生产环境使用自定义网络合理规划网络段做好网络隔离3. 网络别名# Docker Compose网络version:3services: web: image: nginx networks: - frontend - backend db: image: mysql networks: - backend networks: frontend: backend: internal:true# 完全隔离九、Docker Compose网络1. 网络配置# docker-compose.ymlversion:3.8services:app:build:.networks:-app-networkdb:image:mysqlnetworks:-app-networknetworks:app-network:driver:bridgeipam:config:-subnet:172.20.0.0/162. 外部网络# 连接外部网络networks:existing-network:external:true十、总结Docker网络模型选择要点Bridge默认模式适合单主机多容器Host高性能直接使用主机网络Overlay跨主机通信适用于Swarm/K8sMacvlan需要为容器分配独立IP最佳实践生产环境使用自定义网络合理规划网络段避免冲突做好网络隔离敏感服务使用internal网络使用Docker Compose统一管理网络配置个人观点仅供参考

更多文章