Docker 提供了多种网络模式,每种模式适用于不同的场景,以下是主要的 Docker 网络模式及其特点:
docker0
虚拟网桥实现容器间通信。-p
参数)。bash
docker run -d --name my_container -p 8080:80 nginx
bash
docker run -d --name my_container --network host nginx
docker exec
进入容器操作。bash
docker run -d --name my_container --network none alpine sleep 3600
localhost
直接通信。bash
docker run -d --name container1 nginx
docker run -d --name container2 --network container:container1 alpine
bash
# 创建 Overlay 网络(需 Swarm 模式)
docker network create -d overlay my_overlay_net
bash
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan
模式 | 隔离性 | 性能 | 跨主机 | 典型用途 |
---|---|---|---|---|
Bridge | 高 | 中 | 否 | 单主机容器通信 |
Host | 无 | 高 | 否 | 高性能需求 |
None | 完全 | - | 否 | 完全隔离 |
Container | 共享 | 高 | 否 | 共享网络栈(如 Sidecar) |
Overlay | 高 | 中 | 是 | 集群跨节点通信 |
Macvlan | 高 | 高 | 是 | 容器作为物理网络设备 |
IPvlan | 高 | 高 | 是 | MAC 地址受限环境 |
bridge
或自定义桥接网络。overlay
(Swarm/K8s)或 macvlan
(直连物理网络)。host
模式(牺牲隔离性)。none
或自定义防火墙规则。通过 docker network ls
查看现有网络,docker network inspect <NETWORK>
查看详细信息。