2026年01月20日/ 浏览 15
Docker 的网络配置是容器通信和外部交互的核心,而 docker run 命令中的网络相关参数、Docker 内置的网络模式,以及自定义网络配置,共同构成了 Docker 网络的完整体系。以下从 网络模式详解、关键网络参数、容器通信案例 三个维度展开说明:
Docker 内置了 4 种网络模式,通过 --network 参数指定(默认是 bridge 模式),每种模式对应不同的网络隔离和通信规则。

:
启动两个容器在默认 bridge 网络(需手动指定网络,默认网络不支持容器名解析): # 创建自定义桥接网络(比默认 bridge 更灵活,支持容器名解析) docker network create my-bridge-net # 启动容器并加入自定义桥接网络 docker run -it -d -p 8081:80 --name my-nginx-1 -v ./:/usr/share/nginx/html --network my-bridge-net nginx:latest docker run -d -p 5000:5000 -v app-data:/app --network my-bridge-net --name flask-demo my-flask-app:v1 # 在my-nginx-1容器内 ping flask-demo 容器(通过容器名通信) / # ping flask-demo # 成功返回,因为自定义桥接网络支持 DNS 解析:
启动 Nginx 容器,直接使用宿主机的 80 端口: docker run -d -v ./:/usr/share/nginx/html --network host --name host-nginx nginx测试:
维度
bridge 模式
host 模式
网络隔离
容器有独立网络命名空间
共享宿主机网络命名空间
端口占用
需端口映射(-p)
直接使用宿主机端口
安全性
隔离性好(默认无法访问宿主机)
隔离性差(容器可直接访问宿主机网络)
适用场景
多容器协同(单机)
高性能服务、依赖宿主机网络环境
:
启动一个仅处理本地文件的容器: docker run -it --rm --network none nginx场景:如前面<1.bridge模式(默认模式)> 已有案例
场景:让宿主机外部(如同一局域网的其他设备)访问容器内的服务。
docker run -d -p 5000:5000 -v app-data:/app --network my-bridge-net --name flask-demo my-flask-app:v1 # 宿主机外部设备通过 "宿主机IP:5000" 访问(如 192.168.1.100:5000) curl http://宿主机IP:5000 # 成功访问容器内的 Flask 服务场景:容器直接使用宿主机网络,无需端口映射,适合需要高性能网络的场景。如前面<2.host模式>案例
除了内置网络,可通过 docker network 命令创建、管理自定义网络,实现更灵活的隔离和通信规则。
命令
作用
docker network create <name>
创建自定义网络(默认 bridge 类型)
docker network ls
列出所有网络
docker network inspect <name>
查看网络详情(含关联的容器、IP 等)
docker network connect <name> <container>
将容器加入网络
docker network disconnect <name> <container>
将容器从网络移除
docker network rm <name>
删除网络(需先断开所有容器)
场景:为容器分配固定网段的 IP(避免与宿主机网络冲突)。
# 创建自定义 bridge 网络,指定子网和网关 docker network create \ --driver bridge \ --subnet 192.168.100.0/24 \ # 子网 --gateway 192.168.100.1 \ # 网关 my-custom-net # 启动容器时指定固定 IP(需在子网范围内) docker run -d --name app \ --network my-custom-net \ --ip 192.168.100.10 \ # 固定 IP nginxDocker 网络模式的选择需根据场景决定:
单机多容器通信:优先 自定义 bridge 网络(支持 DNS 解析,隔离性好)。高性能 / 无端口冲突需求:host 模式(但需注意端口占用)。无网络需求:none 模式。跨主机集群:overlay 模式(依赖 Swarm 或 Kubernetes)。通过合理配置网络,可实现容器间、容器与外部的安全、高效通信,是 Docker 部署的核心环节。