docker network 创建 host 和 none 网络模式

docker network 创建 host 和 none 网络模式与创建普通的 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 看到它们。

手动创建 host 或 none 网络的唯一场景是:

你在使用 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应用 高性能网络需求、监控代理 离线计算、高安全沙箱
相关推荐
xbzb38 分钟前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级
梦到啥说啥3 小时前
Linux网络编程:TCP网络协议
网络·网络协议·tcp/ip
Shanks.6 小时前
2026 远程控制软件实测:ToDesk / 向日葵 / RustDesk / TeamViewer 在跨城与弱网下的真实差距
网络·远程工作·软件需求
Jeremy_WW6 小时前
802.3协议解读 06:117章节 RS 和 200GMII / 400GMII I
网络·网络协议·信息与通信·光模块·802.3协议
坤坤子吖7 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
顧棟8 小时前
INFINI Gateway 服务器端口重用(SO_REUSEPORT)实现与分析
网络·gateway
方便面不加香菜8 小时前
Docker Volume -- 管理卷Volume详解
运维·docker·容器
沫璃染墨8 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
江湖有缘9 小时前
Docker实战 | 使用Docker部署lemonitor镜像站点列表程序
运维·docker·容器
LabVIEW开发9 小时前
Omron PLC:接 LabVIEW 常踩的 5 个坑
服务器·网络·labview·labview知识·labview功能·labview程序