Docker 的网络模式决定了容器如何与宿主机、其他容器及外部网络进行通信。Docker 提供了多种网络模式,每种模式适用于不同的场景。以下是 Docker 的主要网络模式及其特点:
docker0
虚拟网桥与宿主机通信。172.17.0.x
),并通过 NAT 与外部通信。bash
docker run -d --name my_container nginx # 默认使用 bridge 模式
bash
docker run -d --network host --name my_container nginx
bash
docker run -d --network none --name my_container alpine
localhost
直接通信。bash
docker run -d --name container1 nginx
docker run -d --network container:container1 --name container2 alpine
bash
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 |
低 | 高 | 共享网络栈的容器组 |
overlay |
中等 | 中等 | 跨主机集群(Swarm/K8s) |
macvlan |
高 | 高 | 直接接入物理网络 |
bash
docker network ls
bash
docker network create --driver bridge my_bridge
docker run -d --network my_bridge --name my_container nginx
bash
docker inspect my_container | grep IPAddress
通过合理选择网络模式,可以优化容器通信的灵活性、性能或安全性。如有进一步问题(如端口映射、DNS 配置等),欢迎补充提问!