news 2026/4/17 10:15:38

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【架构实战】Docker容器网络模型详解

一、Docker网络概述

Docker容器网络是云原生架构的基础:

网络模型:

  • Bridge(桥接模式)
  • Host(主机模式)
  • Overlay(覆盖网络)
  • Macvlan
  • None

二、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-itwebpingmysql

3. 端口映射

# 映射端口dockerrun-d-p8080:80 nginx# 随机端口dockerrun-d-Pnginx# 指定IP和端口dockerrun-d-p127.0.0.1:8080:80 nginx

三、Host网络

1. 原理

容器直接使用主机网络栈:

# 使用host网络dockerrun-d--networkhostnginx

2. 适用场景

  • 性能敏感场景
  • 需要使用主机端口
  • 网络调试

四、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\--subnet=192.168.1.0/24\--gateway=192.168.1.1\-oparent=eth0 my-macvlan# 运行容器dockerrun-d--networkmy-macvlan nginx

2. 适用场景

  • 需直接暴露容器IP
  • 旧应用迁移
  • 网络隔离

六、网络隔离

1. 网络隔离

# 创建隔离网络dockernetwork create--internalbackend# 只有内部网络的容器dockerrun-d--networkbackend mysql

2. 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/K8s
  • Macvlan:需要独立IP

最佳实践:

  1. 生产环境使用自定义网络
  2. 合理规划网络段
  3. 做好网络隔离

3. 网络别名

# Docker Compose网络version:'3'services: web: image: nginx networks: - frontend - backend db: image: mysql networks: - backend networks: frontend: backend: internal:true# 完全隔离

九、Docker Compose网络

1. 网络配置

# docker-compose.ymlversion:'3.8'services:app:build:.networks:-app-networkdb:image:mysqlnetworks:-app-networknetworks:app-network:driver:bridgeipam:config:-subnet:172.20.0.0/16

2. 外部网络

# 连接外部网络networks:existing-network:external:true

十、总结

Docker网络模型选择要点:

  • Bridge:默认模式,适合单主机多容器
  • Host:高性能,直接使用主机网络
  • Overlay:跨主机通信,适用于Swarm/K8s
  • Macvlan:需要为容器分配独立IP

最佳实践:

  1. 生产环境使用自定义网络
  2. 合理规划网络段,避免冲突
  3. 做好网络隔离,敏感服务使用internal网络
  4. 使用Docker Compose统一管理网络配置

个人观点,仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 10:12:02

3步解锁英雄联盟全皮肤:R3nzSkin内存换肤终极指南

3步解锁英雄联盟全皮肤:R3nzSkin内存换肤终极指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 你是否梦想过在英雄联盟中随意切换所有皮肤,却担心账号安全&…

作者头像 李华
网站建设 2026/4/17 10:08:52

从GBK到UTF-8:手把手教你用Python在Windows上正确处理多编码文本文件

从GBK到UTF-8:手把手教你用Python在Windows上正确处理多编码文本文件 在Windows环境下处理多编码文本文件时,开发者常常会遇到各种编码问题。特别是当我们需要处理来自不同来源的文本数据时,编码不一致可能导致文件读取失败或乱码。本文将带你…

作者头像 李华
网站建设 2026/4/17 10:04:38

SD-PPP:打破Photoshop与AI绘图壁垒的三大实战解决方案

SD-PPP:打破Photoshop与AI绘图壁垒的三大实战解决方案 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 你是否曾为这样的场景感到困扰?在Photoshop中精心构思一个创意,却需要切换…

作者头像 李华