2.7 KiB
2.7 KiB
title, tags, date
| title | tags | date | |||
|---|---|---|---|---|---|
| Docker Network |
|
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 | 容器像物理机一样出现在网络中 |
查看与管理命令
# 查看所有网络
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
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
解决方案:
- 删除旧网络:
docker network rm portainer_network - 或在 compose 中声明
external: true复用已存在的网络
External Mode(复用外部网络)
networks:
portainer_network:
external: true
声明 external: true 后,Compose 不会尝试创建网络,而是直接使用已存在的同名网络。
Related Concepts
- Docker Compose — compose 中声明式定义网络
- Docker堆栈 — 堆栈中多服务共享网络
- 桥接网络 — Docker bridge 网络驱动
Related Entities
See Also
- 家庭监控方案-prometheus-grafana-node-exporter-cadvisor-blackbox — Prometheus 部署涉及 Docker 网络配置