# Docker 网络模型概述

URL: https://caijiao.org/docker/networking/overview
Source: docs/docker/networking/overview.md
Description: 本章节介绍 Docker 的网络模型，包括容器间通信、桥接网络、主机网络、覆盖网络及自定义网络等概念，帮助开发者理解容器网络原理并进行高效配置。

Docker 网络模型决定了容器之间如何通信、如何访问宿主机及外部网络。理解 Docker 的网络模型有助于容器化应用的部署、调试与安全管理。

## 1. Docker 网络类型

Docker 提供多种网络类型，每种类型适用于不同场景：

### 1.1 桥接网络（Bridge）

- 默认网络类型
- 容器在同一桥接网络内可互相通信
- 容器通过 NAT 与宿主机通信
- 创建自定义桥接网络：

```bash
docker network create my-bridge
docker run -d --network my-bridge myapp
````

### 1.2 主机网络（Host）

- 容器共享宿主机网络栈
- 无网络隔离，性能高
- 适用于对网络性能要求高的场景：

```bash
docker run --network host myapp
```

### 1.3 覆盖网络（Overlay）

- 用于 Swarm 或 Kubernetes 集群
- 跨主机容器通信
- 使用 VXLAN 封装流量，实现集群内部互联

### 1.4 无网络（None）

- 容器没有网络接口
- 适用于特殊隔离或安全场景

## 2. Docker 默认网络

- `bridge`：默认容器连接的网络
- `host`：共享宿主机网络
- `none`：没有网络
- `overlay`：集群环境使用

查看默认网络：

```bash
docker network ls
```

## 3. 容器通信机制

- Docker 使用 NAT、端口映射和虚拟接口实现容器与宿主机及外部的通信
- 容器间通信：

  - 同一网络可通过容器名称或 IP 互相访问
- 容器与宿主机通信：

  - 桥接网络需端口映射
  - 主机网络无需映射，直接访问宿主机端口

## 4. 网络管理命令

- 创建网络：

```bash
docker network create mynetwork
```

- 查看网络：

```bash
docker network inspect mynetwork
```

- 删除网络：

```bash
docker network rm mynetwork
```

---

掌握 Docker 网络模型及配置方法，可以确保容器间通信顺畅、安全可靠，并优化网络性能。
