docker network 创建 host 和 none 网络模式

docker network 创建 hostnone 网络模式与创建普通的 bridge 网络略有不同,因为它们的机制比较特殊。

以下是具体的命令和注意事项:

1. 创建 Host 模式网络

核心概念
host 模式并不是创建一个虚拟的"网桥",而是让容器直接使用宿主机的网络栈。容器没有独立的 IP,它共享宿主机的 IP 和端口。

命令:

bash 复制代码
docker network create -d host my-host-net
  • -d host:指定驱动为 host。
  • my-host-net:网络名称(你可以随便起,但通常没必要,因为 host 模式行为是固定的)。

⚠️ 重要限制:

  • 端口映射无效 :在 host模式下,-p 8080:80 这种参数完全失效。如果容器监听 80 端口,宿主机必须确保 80 端口未被占用。
  • 隔离性差: 容器看到的网络接口就是宿主机的接口。
  • 通常不需要显式创建 :Docker 默认内置了一个名为 host的网络。你通常可以直接在运行容器时使用 --network host a,而不需要手动 create。手动创建的主要目的是为了在某些编排工具中统一引用名称。

使用示例:

bash 复制代码
# 直接运行一个使用 host网络的容器
docker run -d --network host nginx
# 此时访问宿主机的 IP + 80端口即可看到 Nginx

2. 创建 None 模式网络

核心概念
none 模式表示容器没有任何网络连接 。它只有一个本地回环接口 (lo),无法访问外部网络,其他容器也无法访问它。适用于高安全需求或批处理任务。

命令:

bash 复制代码
docker network create -d none my-none-net
  • -d none:指定驱动为 none。

⚠️ 重要限制:

  • 完全隔离 :容器内无法 ping 通百度,也无法 apt-get install
  • 通常不需要显式创建 :Docker 默认内置了一个名为 none 的网络。

使用示例:

bash 复制代码
# 运行一个完全断网的容器
docker run -d --network none alpine sleep 3600

3. 为什么通常不建议手动 create host/none?

Docker 在安装时会自动创建三个默认网络:

  1. bridge (默认)
  2. host
  3. none

你可以随时通过 docker network ls 看到它们。

手动创建 hostnone 网络的唯一场景是:

你在使用 Docker Compose 或 Kubernetes 等编排工具,并且希望给这个特殊的网络起一个自定义的名字 以便在配置文件中引用,或者为了保持配置的一致性(所有网络都通过 create 生成)。

对于绝大多数日常使用:

  • 如果想用 Host 模式:直接 docker run --network host ...
  • 如果想用 None 模式:直接 docker run --network none ...
  • 如果想用自定义 Bridge 模式(最常用):才需要 docker network create -d bridge ...

4. 总结对比表

特性 Bridge (默认/自定义) Host None
创建命令 docker network create -d bridge mynet docker network create -d host mynet docker network create -d none mynet
IP 地址 有独立内部 IP (如 172.18.0.2) ,共用宿主机 IP ,仅 lo (127.0.0.1)
端口映射 (-p) ✅ 支持 不支持 (直接占用宿主机端口) ❌ 无意义
网络隔离 中等 (与其他容器隔离) 无 (与宿主机完全共享) 最高 (完全断网)
典型用途 微服务通信、Web应用 高性能网络需求、监控代理 离线计算、高安全沙箱
相关推荐
晚风吹长发10 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
hz5678911 小时前
音视频SDK核心能力分析:低延迟传输与高并发接入方案
网络·安全·音视频·实时音视频·信息与通信
q5673152311 小时前
企业级 HTTP 代理采购选型:技术评估清单 15 项
开发语言·网络·爬虫·网络协议·http·隧道ip·代理ip
白嫖一茶11 小时前
HTTP 状态码详解:五大类与常见状态码解析
网络·网络协议·http
treesforest14 小时前
如何解决IP定位精度不足导致的投放偏差
网络·网络协议·tcp/ip·ip属地·查ip归属地
茯苓gao14 小时前
嵌入式开发笔记:CAN与CAN FD完全指南——从帧格式差异到MCU选型实战
网络·笔记·stm32·嵌入式硬件·学习·汽车
ji_shuke14 小时前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
奥莱维15 小时前
酒店客控系统与消防系统联动设计
网络
张忠琳15 小时前
【NVIDIA】k8s-device-plugin v0.19.3 标签管理模块 (internal/lm) 深度分析之六
云原生·容器·架构·kubernetes·nvidia
小匠石钧知15 小时前
02_在多个RockyLinux10虚拟机上安装k8s集群
云原生·容器·kubernetes·k8s