Docker网络
说明
- Docker网络模式有三种:Bridge、Host、Container。
- 当然还有一种null模式,也就是无网络模式。
| 网络模式 | 说明 | 特点与适用场景 | 网络隔离级别 | 端口映射 | 跨容器通信方式 |
|---|---|---|---|---|---|
| Bridge(桥接模式) | Docker默认网络模式,所有容器连接到docker0虚拟网桥,通过NAT访问外网。 | 容器间通过docker0二层交换通信,需手动端口映射对外提供服务,适合大多数单主机场景。 | 高 | 支持 | 同主机内通过网桥直接通信;外部需端口映射 |
| Container(容器共享模式) | 共享同一个Network Namespace,共用IP、端口栈。 | 两个容器共享网络资源,进程可直接通过localhost通信,除网络外其他资源隔离,适合容器间紧密协作场景(如日志收集与主应用)。 | 仅网络共享 | 无需(共享目标容器端口) | 直接通过localhost通信,无需额外配置 |
| Host(主机模式) | 容器直接共享宿主机的网络 | 端口直接占用宿主机端口,适合高性能场景 | 无 | 无需 | 直接使用宿主机网络栈,无额外通信开销 |
常用命令
| 命令用途 | 完整命令示例 | 说明与常用场景 |
|---|---|---|
| 查看所有网络列表 | docker network ls | 快速列出所有网络,包括默认的bridge/host/none和自定义网络 |
| 网络的详细信息 | docker network inspect bridge | 查看网络配置、网段、网关、已连接容器列表 |
| 创建自定义bridge网络(默认bridge) | docker network create 网络模式名 | 自带容器DNS解析,支持容器名直接通信 |
| 运行容器时使用host模式 | docker run -d --name test --network host 镜像 | 直接共享宿主机网络栈,性能最高,无需端口映射,容器IP即宿主机IP。 |
| 运行容器时使用container模式 | docker run -d --name test --network container:目标容器 镜像 | 共享目标容器的network namespace,可直接通过localhost访问目标容器服务 |
| 将运行中容器加入指定网络 | docker network connect 网络模式 容器名 | 给已启动的容器动态添加网络连接,无需重启容器,支持多网络接入。 |
| 将容器从指定网络断开 | docker network disconnect 网络模式 容器名 | 移除容器与指定网络的连接 |
| 清理所有未使用的网络 | docker network prune | 一键删除所有未被任何容器使用的网络,清理环境,避免残留无效网络。 |
| 删除指定自定义网络 | docker network rm 网络模式名 | 删除指定网络,注意:网络必须无任何容器连接才能删除。 |
架构图
Bridge模式
Container模式
