networkinglisted
Install: claude install-skill ryukyagamilight/terminal-skills
# Docker 容器网络
## 概述
容器网络模式、跨主机通信等技能。
## 网络驱动
### 网络类型
```bash
# bridge(默认)- 单主机容器通信
# host - 共享主机网络
# none - 无网络
# overlay - 跨主机通信(Swarm)
# macvlan - 分配 MAC 地址
```
### 查看网络
```bash
# 列出网络
docker network ls
# 网络详情
docker network inspect bridge
docker network inspect network_name
# 查看容器网络
docker inspect container_name --format '{{json .NetworkSettings.Networks}}'
```
## Bridge 网络
### 默认 bridge
```bash
# 容器使用默认 bridge
docker run -d --name web nginx
# 查看 IP
docker inspect web --format '{{.NetworkSettings.IPAddress}}'
# 默认 bridge 容器间通过 IP 通信
# 不支持容器名解析
```
### 自定义 bridge
```bash
# 创建网络
docker network create mynet
docker network create --driver bridge --subnet 172.20.0.0/16 mynet
# 使用自定义网络
docker run -d --name web --network mynet nginx
docker run -d --name api --network mynet myapi
# 自定义网络支持容器名解析
docker exec api ping web
```
### 连接多个网络
```bash
# 创建网络
docker network create frontend
docker network create backend
# 容器连接多个网络
docker run -d --name app --network frontend myapp
docker network connect backend app
# 断开网络
docker network disconnect frontend app
```
## Host 网络
```bash
# 使用主机网络
docker run -d --network host nginx
# 容器直接使用主机端口
# 无需端口映射
# 性能最好,但端口可能冲突
```
## None 网络
```bash
# 无网络
docker run -d --network none myapp
# 完全隔离,无网络访问
# 适用于安全敏感场景
```
## 端口映射
```bash
# 映射端口
docker run -d -p 8080:80 nginx # HOST:CONTAINER
docker run -d -p 80:80 -p 443:443 nginx # 多端口
docker run -d -p 127.0.0.1:8080:80 nginx # 绑定特定 IP
docker run -d -P nginx