Update nexus: fix conflicts and sync local changes
This commit is contained in:
@@ -1,88 +1,88 @@
|
||||
---
|
||||
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 网络配置
|
||||
---
|
||||
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 网络配置
|
||||
|
||||
Reference in New Issue
Block a user