Docker(2)网络模式

Docker 在运行容器时,通过 Network Namespace ​ 实现网络隔离,并提供多种网络模式(Network Mode) 。下面系统介绍各模式,并给出实用案例。


一、查看 Docker 网络模式

复制代码

bash

bash

复制代码
docker network ls

默认会看到:

  • bridge(默认)

  • host

  • none


二、Docker 常见网络模式详解

1️⃣ bridge(桥接模式,默认)

说明

  • 每个容器分配独立 IP

  • 通过 docker0虚拟网桥通信

  • 外部访问需 端口映射 -p

✅ 最常用

❌ 跨主机不支持(需 overlay)

启动容器

复制代码
docker run -d --name nginx-bridge \
  -p 8080:80 \
  nginx

访问:

复制代码
http://宿主机IP:8080

查看网络

复制代码
docker inspect nginx-bridge | grep IPAddress

2️⃣ host(主机模式)

说明

  • 容器直接使用宿主机网络栈

  • 无 NAT、无端口映射

  • 容器端口 = 宿主机端口

✅ 性能最好、少一层网络转换

❌ 失去网络隔离、端口冲突风险

启动容器

复制代码
docker run -d --name nginx-host \
  --network host \
  nginx

访问(直接用宿主机 80 端口):

复制代码
http://宿主机IP

⚠️ Windows / Mac(Docker Desktop)上 --network host不生效或表现不同


3️⃣ none(无网络)

说明

  • 容器内只有 lo(127.0.0.1)

  • 无法访问外网、无法被访问

✅ 用于高安全 / 离线计算 / 自定义网络

复制代码
docker run -it --network none busybox sh

ping baidu.com   # 失败

4️⃣ container(共享另一个容器的网络)

说明

  • 多个容器共享同一个 Network Namespace

  • 类似 --network host,但是共享的是某容器

✅ 常用于 Sidecar(日志、监控)

复制代码
复制代码
# 主容器
docker run -d --name web nginx

# 共享其网络
docker run -it --network container:web busybox sh

在 busybox 中:

复制代码
wget localhost:80

5️⃣ 自定义 bridge 网络(推荐生产使用)

说明

  • 自带 DNS 容器名解析

  • 更好的隔离性

复制代码

bash

bash

复制代码
docker network create mynet
复制代码

bash

bash

复制代码
docker run -d --name db --network mynet mysql:8
docker run -d --name app --network mynet myapp

在 app容器中可直接解析:

复制代码

bash

bash

复制代码
ping db

三、模式对比总结

模式 隔离 端口映射 DNS解析 典型场景
bridge ✅ ✅ -p ❌(默认) 普通服务
host ❌ ❌ ❌ 高性能/端口多
none ✅ ❌ ❌ 离线/安全
container 共享 ❌ 共享 Sidecar
自定义 bridge ✅ ✅ ✅ 生产微服务
相关推荐
mengge.cloud2 小时前
prometheus+k8s+弹性伸缩,综合项目
云原生·容器·kubernetes·prometheus
Z21-X3 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘5 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮6 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
xbzb6 小时前
从零容器化部署 ECShop:Harbor 私有仓库 + 自定义 PHP 镜像 + LNMP 三容器
容器·php·harbor·镜像·仓库·ecshop
那明眸似水6 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
腾飞开源7 小时前
03_Kubernetes 核心概念拆解:从 Spec/Status 收敛到工作负载控制器的设计逻辑
云原生·容器·kubernetes
小南家的青蛙8 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻18 小时前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
xbzb1 天前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级