89 lines
2.7 KiB
Markdown
89 lines
2.7 KiB
Markdown
---
|
||
title: "Docker Network"
|
||
tags: [docker, networking, container]
|
||
date: 2026-04-22
|
||
---
|
||
|
||
# Docker Network
|
||
|
||
## Definition
|
||
Docker Network 是 Docker 提供的容器网络连接机制,支持多种网络驱动(bridge / host / overlay / macvlan / none),使容器能够相互通信并与外部网络交互。
|
||
|
||
## Network Drivers
|
||
|
||
| 驱动 | 用途 | 特点 |
|
||
|------|------|------|
|
||
| **bridge** | 默认网络驱动 | 容器通过虚拟网桥通信,默认 bridge IP 为 172.17.0.1 |
|
||
| **host** | 移除网络隔离 | 容器直接使用宿主机网络栈 |
|
||
| **overlay** | Docker Swarm 多主机通信 | 跨多个 Docker daemon |
|
||
| **macvlan** | 给容器分配真实 MAC | 容器像物理机一样出现在网络中 |
|
||
|
||
## 查看与管理命令
|
||
```bash
|
||
# 查看所有网络
|
||
docker network ls
|
||
|
||
# 查看特定网络的详细信息(驱动、容器、IP)
|
||
docker network inspect bridge
|
||
|
||
# 查看连接了某网络的容器
|
||
docker network inspect <network_name> --format '{{range .Containers}}{{.Name}} {{end}}'
|
||
|
||
# 创建自定义 bridge 网络
|
||
docker network create --driver bridge my_network
|
||
|
||
# 删除网络
|
||
docker network rm my_network
|
||
|
||
# 删除前先断开容器连接
|
||
docker network disconnect my_network container_name
|
||
```
|
||
|
||
## Docker Compose 中的 Network
|
||
```yaml
|
||
services:
|
||
app:
|
||
networks:
|
||
- frontend
|
||
- backend
|
||
|
||
networks:
|
||
frontend:
|
||
driver: bridge
|
||
backend:
|
||
driver: bridge
|
||
```
|
||
|
||
## Compose 项目间命名冲突
|
||
Docker Compose 默认以**项目目录名**作为网络名前缀:
|
||
- 项目 A(目录 `~/portainer`)→ 网络名 `portainer_default`
|
||
- 项目 B(目录 `~/portainer-stack`)→ 网络名 `portainer-stack_default`
|
||
|
||
当两个项目名不同但都声明了 `portainer_network` 时,会产生警告:
|
||
> WARN: Network portainer_network declared as external, but it does not exist
|
||
|
||
**解决方案**:
|
||
1. 删除旧网络:`docker network rm portainer_network`
|
||
2. 或在 compose 中声明 `external: true` 复用已存在的网络
|
||
|
||
## External Mode(复用外部网络)
|
||
```yaml
|
||
networks:
|
||
portainer_network:
|
||
external: true
|
||
```
|
||
声明 `external: true` 后,Compose 不会尝试创建网络,而是直接使用已存在的同名网络。
|
||
|
||
## Related Concepts
|
||
- [[Docker Compose]] — compose 中声明式定义网络
|
||
- [[Docker堆栈]] — 堆栈中多服务共享网络
|
||
- [[桥接网络]] — Docker bridge 网络驱动
|
||
|
||
## Related Entities
|
||
- [[Portainer]] — Docker 可视化管理工具,提供网络管理 Web UI
|
||
- [[群晖 NAS]] — Docker 网络配置的平台
|
||
- [[Docker]] — 网络系统的底层平台
|
||
|
||
## See Also
|
||
- [[家庭监控方案-prometheus-grafana-node-exporter-cadvisor-blackbox]] — Prometheus 部署涉及 Docker 网络配置
|