全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

Host 网络模式

Host 网络模式让容器共享宿主机网络栈,下面介绍使用方法与限制。

基本用法

Bash
# 使用 host 网络
docker run -d --network host nginx

# 容器直接使用宿主机端口,无需 -p 映射

特点

优势

  • 零网络开销:无 NAT、无网桥,性能最高
  • 直接使用宿主机 IP:容器对外暴露 IP 与宿主机相同
  • 无需端口映射:容器监听端口直接对外

限制

  • 端口冲突:容器端口不能与宿主机已有端口冲突
  • 网络不隔离:容器与宿主机共享网络栈
  • 仅 Linux 支持:macOS/Windows Docker Desktop 不支持

对比

对比项BridgeHost
网络隔离✅ 隔离❌ 共享
端口映射需要 -p不需要
性能有 NAT 开销零开销
端口冲突不冲突可能冲突
平台全平台仅 Linux

适用场景

高性能网络

Bash
# 网络密集型应用
docker run -d --network host my-high-throughput-app

网络监控

Bash
# 需要访问宿主机网络接口
docker run -d --network host net-tools

端口固定

Bash
# 容器使用固定端口,无需映射
docker run -d --network host -e PORT=80 my-app

示例

Nginx

Bash
# Host 网络模式运行 Nginx
docker run -d --network host nginx

# 访问
curl http://localhost:80  # 直接访问,无需 -p

多容器

Bash
# 创建 host 网络容器
docker run -d --network host --name web nginx
docker run -d --network host --name app my-app

# 两个容器共享宿主机网络栈
# 如果 web 监听 80,app 不能监听 80(冲突)

注意事项

Bash
# 端口冲突
docker run -d --network host nginx  # 监听 80

# 如果宿主机已有服务监听 80,会启动失败
Bash
# 查看端口占用
sudo lsof -i :80
sudo netstat -tlnp | grep 80

Host 网络模式下容器直接使用宿主机端口,需确保无冲突。

与端口映射对比

Bash
# Bridge 模式(需要映射)
docker run -d -p 8080:80 nginx
# 外部访问: http://localhost:8080

# Host 模式(无需映射)
docker run -d --network host nginx
# 外部访问: http://localhost:80

要点总结

  • --network host 共享宿主机网络栈,零网络开销
  • 容器直接使用宿主机端口,无需 -p 端口映射
  • 端口不能与宿主机已有服务冲突
  • 性能最高但无网络隔离,适合高性能需求
  • 仅 Linux 支持,macOS/Windows Docker Desktop 不支持

📝 发现内容有误?点击此处直接编辑

← 上一篇 Bridge 网络模式
下一篇 → Overlay 跨主机网络
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库