Files
nexus/wiki/entities/Docker-Network.md

89 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 网络配置