【架构实战】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统一管理网络配置

个人观点,仅供参考

目录
相关文章
|
存储 运维 持续交付
Nacos架构与原理 - 寻址机制
Nacos架构与原理 - 寻址机制
337 0
|
29天前
|
SQL 人工智能 自然语言处理
什么是低代码 v2.0 时代?JeecgBoot低代码用 Skills 把"一句话生成系统"做成了现实
一句话先说清楚:低代码 v1.0 阶段,是用"拖拽设计"代替"代码开发";低代码 v2.0 阶段,是用 AI Skills 把"拖拽设计"也省掉, 一句话生成功能。![低代码迈入 v2.0 时代 — Skills 加持一句话搭建系统](https://oscimg.oschina.net/osc
121 5
什么是低代码 v2.0 时代?JeecgBoot低代码用 Skills 把"一句话生成系统"做成了现实
|
29天前
|
人工智能 自然语言处理 监控
阿里云大模型服务平台怎么用?模型训练、模型部署计费规则及价格参考
本文介绍了阿里云百炼平台模型训练与模型部署两大环节的计费规则。训练方面,千问系列文本模型按Token计费,价格从0.003元/千Token至0.15元/千Token不等;万相视频生成模型则按训练Token总量计费,需结合视频时长、像素和循环次数计算。部署方面,提供按使用时长(预置吞吐/模型单元)、按Token使用量及按实例时长等多种计费方式,覆盖千问、千问VL、万相等主流模型。文章还附有计费示例与常见问题解答,帮助用户合理规划AI应用成本。
|
存储 分布式计算 Hadoop
基于docker的Hadoop环境搭建与应用实践(脚本部署)
本文介绍了Hadoop环境的搭建与应用实践。对Hadoop的概念和原理进行了简要说明,包括HDFS分布式文件系统和MapReduce计算模型等,主要通过脚本的方式进行快捷部署,在部署完成后对HDFS和mapreduce进行了测试,确保其功能正常。
|
29天前
|
人工智能 运维 网络安全
OpenClaw、Hermes Agent、Claude Code 接入配置阿里云百炼大模型保姆级教程
当下AI智能体与终端编程工具已经成为开发者提效的核心利器,OpenClaw、Hermes Agent、Claude Code凭借强大的代码生成、任务自动化、流程调度、工程运维能力,被广泛应用于个人开发、团队协作、服务器运维、业务流程自动化等各类场景。
911 1
OpenClaw、Hermes Agent、Claude Code 接入配置阿里云百炼大模型保姆级教程
|
3天前
|
SQL JSON 关系型数据库
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
阿里云AnalyticDB MySQL版是PB级云原生实时数据仓库,首创多模态统一分析引擎,单SQL原生支持SQL分析、向量检索、全文搜索与JSON分析,替代3–5套独立系统,综合成本降50%+,运维复杂度降80%,适用于AI+数据融合、多源异构统一查询等企业级场景。
151 17
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
|
iOS开发
iOS - QRCode 二维码
1、QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing。iOS7 之后可以利用系统原生 API 生成二维码, iOS8 之后可以生成条形码, 系统默认生成的颜色是黑色。
3320 0
|
3天前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
225 16
|
3天前
|
SQL 安全 测试技术
《ZAKU渗透论:卓伊凡的2026渗透工程》第一章:黑客是怎么工作的?
渗透测试是授权下模拟黑客攻击,检验系统安全性;白帽合法防护,黑帽非法入侵,灰帽亦违法。攻击分7步:侦察、武器化、投递、利用、安装、C2、目标达成。它不同于自动化漏洞扫描,重在人工验证与深度分析。(239字)
196 6
|
3天前
|
人工智能 JSON 测试技术
3人团队搞定500+接口:用Skills构建可复用的“测试技能库”,复用率提升80%
本文直击接口自动化测试痛点:脚本重复率高、复用率不足20%、维护成本飙升。提出“测试技能库”新范式——将校验逻辑提炼为可检索、可组合、带契约的“技能”,实现从“代码复用”到“能力复用”的跃迁。含三层架构、落地三步法与真实订单案例,助团队降本增效。

热门文章

最新文章