目录

一、网络模式概述

二、Host 模式:直接使用宿主机网络

三、Container 模式:共享网络命名空间

四、None 模式:完全网络隔离

五、Bridge 模式:默认网络方案

六、如何选择?

七、选择建议


一、网络模式概述

Docker 容器在创建时会通过 Linux 的命名空间实现网络隔离,但为了与外部网络通信,Docker 提供了四种不同的网络模式:

Host 模式:与宿主机共享网络栈

Container 模式:共享另一个容器的网络命名空间

None 模式:完全无网络配置

Bridge 模式:默认模式,通过虚拟网桥通信

二、Host 模式:直接使用宿主机网络

工作原理:在 Host 模式下,容器直接使用宿主机的网络栈,不进行任何网络隔离。这意味着:

1.容器使用宿主机的 IP 地址和端口

2.容器内应用程序直接绑定到宿主机网络接口

3.无需端口映射即可直接访问


 

​
# 启动容器使用 Host 模式

docker run --network host nginx

# 查看容器状态

docker ps

# 输出显示没有端口映射信息,因为直接使用宿主机端口

# 直接访问宿主机80端口即访问容器服务

curl http://127.0.0.1:80



​

适用场景

高性能需求:需要最小化网络开销的场景

网络监控工具:需要直接访问宿主机网络接口

端口直接暴露:希望容器服务直接使用宿主机知名端口

避免端口冲突:在确保端口不冲突的情况下简化配置

三、Container 模式:共享网络命名空间

工作原理:Container 模式允许新创建的容器共享指定容器的网络命名空间。两个容器:

1.共享相同的网络栈配置

2.可以通过 localhost 直接通信

3.拥有相同的 IP 地址和端口配置

# 首先启动一个 Nginx 容器

docker run -d --name nginx nginx

# 返回容器ID:aef05c6e3264c97442d7416c70fc3cc833d4506d3f70454d785216efc67cdc69



# 创建新容器并共享 Nginx 的网络命名空间

docker run --network container:nginx alpine ping localhost



# Ping 输出显示成功连接到本地回环地址

# PING localhost (::1): 56 data bytes

# 64 bytes from ::1: seq=0 ttl=64 time=0.021 ms



# 查看运行中的容器

docker ps

# 显示两个容器:nginx 和 alpine,后者执行 ping 命令

适用场景

Sidecar 模式:主容器与辅助容器紧密协作

日志收集器:应用容器与日志收集器共享网络

调试工具:调试容器时共享网络环境

服务网格:如 Istio 的 sidecar 代理模式

四、None 模式:完全网络隔离

工作原理:None 模式下,容器没有任何网络栈配置:

1.只有 loopback 接口

2.无法与外部网络通信

3.也无法被外部网络访问

# 使用 None 模式启动容器

docker run --network none alpine ip addr



# 输出显示只有 loopback 接口

# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536...

# inet 127.0.0.1/8 scope host lo

# 没有 eth0 或其他网络接口



# 查看运行中的容器

docker ps

# 只显示之前运行的 Nginx 容器,因为 None 模式的容器无法访问网络

适用场景

离线数据处理:不需要网络连接的计算任务

安全敏感应用:需要与网络完全隔离

单元测试环境:测试无网络情况下的应用行为

数据导入/导出:临时处理敏感数据

五、Bridge 模式:默认网络方案

工作原理:Bridge 模式是 Docker 默认的网络模式:

1.Docker 创建虚拟网桥 docker0

2.为每个容器创建虚拟网络接口(veth pair)

3.容器通过 NAT 与外部网络通信

4.可以通过端口映射暴露服务

# 启动 Nginx 容器并进行端口映射

docker run -d --name nginx -p 8080:80 nginx

# 容器ID:d89da2e42ddd97b0fb5308d2ab5a9fe0063981e39a117684ef6f0abd1403a187



# 查看容器状态

docker ps

# 显示端口映射:0.0.0.0:8080→80/tcp, [::]:8080→80/tcp

适用场景

Web 应用部署:通过端口映射对外提供服务

微服务架构:容器间通过虚拟网络通信

开发测试环境:模拟生产网络环境

多服务隔离:不同服务运行在不同容器中

六、如何选择?

模式

网络隔离

性能

典型用例

Host

最高

高性能代理、网络监控

Container

共享

Sidecar 容器、微服务调试

None

完全

无网络

敏感数据处理、本地计算

Bridge

虚拟

良好

通用 Web 服务、多容器应用

七、选择建议

1.追求极致性能:选择 Host 模式

网络监控工具

高性能计算应用

需要直接使用宿主机端口的服务

2.容器紧密协作:选择 Container 模式

服务网格架构

应用与sidecar容器

调试环境

3.最高安全要求:选择 None 模式

离线数据处理

安全测试环境

敏感数据操作

4.通用应用场景:选择 Bridge 模式

Web应用服务

微服务架构

开发测试环境

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐