Docker-Compose编排 网络类型详解
·
Docker Compose 网络类型详解
bridge网络
默认网络类型,容器通过虚拟网桥连接到宿主机网络。每个容器分配独立IP,容器间可通过服务名通信。适用于单机多容器互联场景。
host网络
容器直接使用宿主机的网络命名空间,共享IP和端口。性能最佳但端口冲突风险高,适合需要低延迟的场景。
none网络
容器不配置任何网络,仅保留回环接口。适用于完全隔离环境或自定义网络配置的场景。
overlay网络
支持跨主机容器通信的网络类型,适用于Swarm集群环境。通过加密通道实现不同物理机上的容器互联。
macvlan网络
为容器分配真实MAC地址,使其直接连接到物理网络。容器像独立物理设备一样出现在局域网中。
宿主机与容器互联方法
端口映射
在docker-compose.yml中通过ports字段实现:
services:
app:
ports:
- "8080:80" # 宿主机8080映射到容器80端口
共享网络模式
使用network_mode: host让容器共享宿主机网络栈,无需端口映射即可通过localhost访问。
自定义网络通信
创建自定义bridge网络并指定固定IP:
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
services:
app:
networks:
mynet:
ipv4_address: 172.20.0.10
Windows宿主机与容器互通配置
防火墙规则配置
在Windows Defender防火墙中允许Docker相关入站规则:
- 控制面板→系统和安全→Windows Defender防火墙
- 允许应用通过防火墙→勾选所有Docker相关条目
网络适配器绑定
在Docker Desktop设置中:
- 进入Settings→Resources→Network
- 将Docker子网绑定到特定物理网卡(如Ethernet)
主机模式网络
对于需要直接暴露的服务,使用network_mode: host并在Windows防火墙开放对应端口。
特殊IP配置
Windows宿主机访问容器需使用Docker分配的虚拟IP(通常172.17.0.0/16)。可通过以下命令查看容器IP:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
跨主机通信
若需与其他Windows主机互通:
services:
app:
ports:
- "0.0.0.0:3306:3306" # 暴露到所有网络接口
networks:
default:
driver: bridge
ipam:
config:
- subnet: 192.168.32.0/24
gateway: 192.168.32.1
更多推荐
所有评论(0)