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

简介: 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. 使用

# 创建网络
docker network create my-bridge

# 运行容器指定网络
docker run -d --name web --network my-bridge nginx

# 查看网络
docker network inspect my-bridge

# 容器间通信
docker exec -it web ping mysql

3. 端口映射

# 映射端口
docker run -d -p 8080:80 nginx

# 随机端口
docker run -d -P nginx

# 指定IP和端口
docker run -d -p 127.0.0.1:8080:80 nginx

三、Host网络

1. 原理

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

# 使用host网络
docker run -d --network host nginx

2. 适用场景

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

四、Overlay网络

1. 原理

跨主机容器通信:

┌─────────────────┐     ┌─────────────────┐
│    Host A       │     │    Host B       │
│  ┌───────────┐  │     │  ┌───────────┐  │
│  │ Container │  │     │  │ Container │  │
│  │172.18.0.2 │  │     │  │172.18.0.3 │  │
│  └─────┬─────┘  │     │  └─────┬─────┘  │
│        │        │     │        │        │
│  ┌─────┴─────┐  │     │  ┌─────┴─────┐  │
│  │  overlay  │  │◄────┼─►│  overlay  │  │
│  └───────────┘  │     │  └───────────┘  │
└─────────────────┘     └─────────────────┘

2. 创建Overlay网络

# 初始化Swarm
docker swarm init

# 创建overlay网络
docker network create -d overlay my-overlay

# 运行服务
docker service create --network my-overlay nginx

五、Macvlan网络

1. 原理

容器直接获取物理网络MAC地址:

# 创建macvlan网络
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my-macvlan

# 运行容器
docker run -d --network my-macvlan nginx

2. 适用场景

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

六、网络隔离

1. 网络隔离

# 创建隔离网络
docker network create --internal backend

# 只有内部网络的容器
docker run -d --network backend mysql

2. DNS管理

# docker-compose.yml
services:
  web:
    image: nginx
    networks:
      - frontend
  db:
    image: mysql
    networks:
      - backend

networks:
  frontend:
  backend:

七、常用 命令

# 列出网络
docker network ls

# 查看网络详情
docker network inspect bridge

# 删除未使用的网络
docker network prune

# 连接容器到网络
docker network connect my-network container

# 断开容器网络
docker network 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.yml
version: '3.8'
services:
  app:
    build: .
    networks:
      - app-network
  db:
    image: mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge
    ipam:
      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统一管理网络配置

个人观点,仅供参考

目录
相关文章
|
1天前
|
人工智能 运维 网络安全
OpenClaw、Hermes Agent、Claude Code 接入配置阿里云百炼大模型保姆级教程
当下AI智能体与终端编程工具已经成为开发者提效的核心利器,OpenClaw、Hermes Agent、Claude Code凭借强大的代码生成、任务自动化、流程调度、工程运维能力,被广泛应用于个人开发、团队协作、服务器运维、业务流程自动化等各类场景。
91 1
OpenClaw、Hermes Agent、Claude Code 接入配置阿里云百炼大模型保姆级教程
|
存储 分布式计算 Hadoop
基于docker的Hadoop环境搭建与应用实践(脚本部署)
本文介绍了Hadoop环境的搭建与应用实践。对Hadoop的概念和原理进行了简要说明,包括HDFS分布式文件系统和MapReduce计算模型等,主要通过脚本的方式进行快捷部署,在部署完成后对HDFS和mapreduce进行了测试,确保其功能正常。
|
3月前
|
Web App开发 存储 JavaScript
多平台文章自动同步助手插件,发文提效工具——开源免费推荐
SyncCaster 是一款本地运行的 Chrome 扩展,支持网页采集、Markdown 编辑与一键同步至掘金、CSDN、知乎、微信公众号等 17+ 平台,内置 LaTeX、Mermaid 和样式保留功能,全程离线、隐私无忧。(239字)
729 5
|
1天前
|
SQL 人工智能 自然语言处理
什么是低代码 v2.0 时代?JeecgBoot低代码用 Skills 把"一句话生成系统"做成了现实
一句话先说清楚:低代码 v1.0 阶段,是用"拖拽设计"代替"代码开发";低代码 v2.0 阶段,是用 AI Skills 把"拖拽设计"也省掉, 一句话生成功能。![低代码迈入 v2.0 时代 — Skills 加持一句话搭建系统](https://oscimg.oschina.net/osc
27 5
什么是低代码 v2.0 时代?JeecgBoot低代码用 Skills 把"一句话生成系统"做成了现实
【B2B 电商干货】1688 店铺流量充足转化率低迷?8 大模块拆解客户流失问题及落地优化方案
本文针对1688 B端商家“高曝光、低转化”痛点,系统拆解客户流失的5大核心节点,从流量精准度、页面视觉、信任体系、客服运营等8大维度,提供可落地的优化策略与10分钟日常自检清单,助力商家提升转化效率。
|
1天前
|
缓存 UED 数据库管理
|
1天前
|
人工智能 自然语言处理 安全
AI 驱动钓鱼活动级检测与一体化防御平台构建研究
本文介绍Cofense 2026年AI钓鱼防御平台升级版,首创活动级检测技术,通过多态聚类、人机协同与防训一体,实现从单邮件响应到攻击活动闭环处置的范式跃迁,显著提升检出率、压缩响应至5分钟内,并提供可落地的工程化代码示例。(239字)
20 0
|
1天前
|
人工智能 自然语言处理 监控
阿里云大模型服务平台怎么用?模型训练、模型部署计费规则及价格参考
本文介绍了阿里云百炼平台模型训练与模型部署两大环节的计费规则。训练方面,千问系列文本模型按Token计费,价格从0.003元/千Token至0.15元/千Token不等;万相视频生成模型则按训练Token总量计费,需结合视频时长、像素和循环次数计算。部署方面,提供按使用时长(预置吞吐/模型单元)、按Token使用量及按实例时长等多种计费方式,覆盖千问、千问VL、万相等主流模型。文章还附有计费示例与常见问题解答,帮助用户合理规划AI应用成本。
|
1天前
|
存储 数据采集 数据可视化
RFID托盘管理打造智能仓储核心引擎
RFID托盘管理通过电子标签为托盘赋予唯一“数字身份证”,结合读写设备与智能系统,实现入库、存储、拣选、出库、回收全生命周期自动识别与追踪。解决人工依赖强、易丢失、数据滞后等痛点,提升效率50%+,盘点缩至2小时,库存准确率达99.9%,助力仓储数字化升级。(239字)