一、bridge 桥接模式(默认模式)
1.模式说明
- 原理:所有容器连接到默认
docker0虚拟网桥,宿主机充当网关 - 容器独立内网 IP,外部无法直接访问容器 IP,必须端口映射
- 容器之间可通过 IP 互通,宿主机可直接访问容器 IP
2.应用场景
Nginx、Java 后端、MySQL、Redis 单机部署
bash
docker run -d -p 8080:80 nginx
- 容器内网互通:Java ↔ MySQL ↔ Redis
- 外网通过宿主机端口访问服务
- 隔离安全,端口不冲突,运维最简单
二、host 主机模式
1.模式说明
- 原理:容器共享宿主机网络栈,不独立 IP
- 容器 IP = 宿主机 IP,端口直接占用宿主机端口
- 无网络隔离,性能最好,不能端口冲突
2.应用场景
Prometheus、Grafana、Filebeat、节点监控
bash
docker run -d --net=host prom/prometheus
- 无需端口映射,性能零损耗
- 容器直接读取宿主机网卡、端口、网络状态
- 监听大量随机端口场景
三、none 无网络模式
1.模式说明
- 容器只有 lo 回环网卡,完全没有外网、内网通信
- 极致安全,仅本地单机运算、离线任务
2.应用场景
离线数据清洗、本地加密解密、涉密后台任务
容器完全不联网,杜绝外网攻击、数据外泄,只在容器内部运算
四、container 容器共享网络
1.模式说明
- 多个容器共用同一个网络命名空间、同一个 IP
- 端口不能重复,进程间本地 socket 通信极快
2.应用场景
A 容器启动后,B 容器共享 A 网络
bash
docker run --name app nginx
docker run --net=container:app alpine
两个容器同一个 IP、同一个端口栈,本地通信 0 延迟
五、overlay 覆盖网络(集群分布式)
1.模式说明
- 跨多台 Docker 主机容器互通,原生支持 Swarm 集群
- 容器跨节点依然内网直连,无需外网端口暴露
2.应用场景
服务 A 在节点 1,服务 B 在节点 2
Overlay 让跨主机容器内网直接互通,不用公网 IP、不用端口转发 天生服务发现、负载均衡、集群 DNS
六、Docker 网络常用运维命令
bash
# 查看所有网络
docker network ls
# 查看网络详情、挂载容器
docker network inspect bridge
# 创建自定义网桥网络
docker network create app-net
# 容器加入自定义网络
docker run --net=app-net nginx
# 删除无用网络
docker network prune