当前位置: 首页 > news >正文

Docker核心技术:深入理解网络模式 ——Host/None/Container 模式与混合云原生架构实践

关键词:Docker核心技术:深入理解网络模式 、Host、None、Container、共享网络命名空间、sidecar、服务网格、混合云、裸金属


1. 关键概念回顾
  • Host:容器与宿主机共享同一个网络命名空间,无额外虚拟化开销,端口直接监听宿主机网卡。
  • None:容器只有 lo 设备,用户可完全自定义网络栈,常用于 CNI 插件或安全加固场景。
  • Container:新容器复用已存在容器的网络命名空间,形成“一 Pod 多容器”模型,是 Kubernetes Pod 的底层实现。

2. 核心技巧提炼
  1. Host 模式下的“端口风暴”:多个容器同时监听 80 会冲突;建议用 systemd 套接字激活或 SO_REUSEPORT。
  2. None 模式 + Cilium:先 docker run --net=none,再由 Cilium agent 注入 eBPF 程序,实现比 Bridge 更低的延迟。
  3. Container 模式做 sidecar:主业务容器与 envoy 共享网络命名空间,envoy 通过 localhost:15001 拦截所有流量,实现零侵入 Service Mesh。

3. 应用场景速览
  • 5G UPF 网元:Host 模式 + DPDK,单核 15Mpps 转发,容器化后仍保持线速。
  • 金融加密机:None 模式启动,由外部 HSM 驱动注入虚拟网卡,满足国密合规“网络隔离”要求。
  • 边缘 AI 推理:主容器跑 TensorRT,sidecar 容器跑 RTSP 拉流,共享网络命名空间,localhost 传输视频帧,延迟 < 5 ms。

4. 详细代码案例分析(≥500字)

本节以“Service Mesh 数据面”为例,演示如何利用 Container 模式构建“零侵入” sidecar,并与 Host 模式混部,实现“东西向流量治理 + 南北向高性能入口”。

4.1 整体拓扑
                        +-------------+|  Ingress    |  Host 模式 + DPDK|  Gateway    |  监听 0.0.0.0:80/443+------+------+|+-------------v-------------+|     Node 192.168.1.10      ||  +----------------------+  ||  |  Pod(实质 Docker)  |  ||  |  +----------------+  |  ||  |  |  app container |  |  ||  |  |  --net=container:sidecar  ||  |  +----------------+  |  ||  |  | sidecar (envoy)|  |  ||  |  +----------------+  |  ||  +----------------------+  |+----------------------------+
4.2 启动 sidecar 容器(第一个容器,提供网络命名空间)
# 先启动一个“暂停”容器,只负责 Hold 住网络命名空间
docker run -d --name sidecar --network none \k8s.gcr.io/pause:3.9
4.3 构建 envoy sidecar 镜像

envoy.yaml 核心片段:

static_resources:listeners:- name: listener_0address:socket_address: { address: 0.0.0.0, port_value: 80 }filter_chains:- filters:- name: envoy.filters.network.http_connection_managertyped_config:"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManagerstat_prefix: ingress_httproute_config:virtual_hosts:- name: backenddomains: ["*"]routes:- match: { prefix: "/" }route: { cluster: local_service }http_filters:- name: envoy.filters.http.routerclusters:- name: local_serviceconnect_timeout: 0.25stype: STATICload_assignment:cluster_name: local_serviceendpoints:- lb_endpoints:- endpoint:address:socket_address: { address: 127.0.0.1, port_value: 8080 }

Dockerfile.envoy

FROM envoyproxy/envoy:v1.28-latest
COPY envoy.yaml /etc/envoy/envoy.yaml
CMD ["envoy", "-c", "/etc/envoy/envoy.yaml"]

构建:

docker build -f Dockerfile.envoy -t sidecar:envoy .
4.4 以 Container 模式启动 sidecar
docker run -d --name envoy --network container:sidecar \sidecar:envoy

此时 envoy 与 pause 容器共享网络命名空间,监听 80 端口。

4.5 构建业务容器(Gin 服务)

代码同文章一,监听 8080。
启动:

docker run -d --name app --network container:sidecar \seckill:latest

由于共享 netns,app 与 envoy 可通过 localhost:8080 通信,无需任何端口映射。

4.6 Host 模式启动 Ingress Gateway

在边缘节点(192.168.1.9)上:

docker run -d --name ingress --network host \-v $PWD/nginx.conf:/etc/nginx/nginx.conf:ro \nginx:alpine

nginx.conf 上游指到 192.168.1.10:80(即 sidecar envoy)。Host 模式让网关直接监听物理网卡,配合 DPDK 可跑到 40 Gbps。

4.7 验证流量路径

客户端 → 192.168.1.9:80(Host 模式 nginx)→ 192.168.1.10:80(Container 模式 envoy)→ localhost:8080(app)。
抓包:

# 在 1.10 节点上
tcpdump -i any -nn port 80 or port 8080

可清晰看到 80 端口只有 envoy 监听,8080 端口只有 app 监听,实现“零端口冲突”。

4.8 性能对比
模式RPS延迟 99%CPU sys备注
Bridge28k120 ms35%见文章一
Container + Host 混合42k65 ms28%sidecar 无 bridge 开销
全 Host51k45 ms25%隔离性最差

混合模式在隔离与性能之间取得平衡,也是 Kubernetes “Pod + NodePort” 的底层原型。

4.9 清理
docker rm -f ingress envoy app sidecar

5. 未来发展趋势
  1. None 模式 + CNI 插件将成主流:Docker 20.10 已支持 --network plugin=cilium,完全 bypass bridge,实现 eBPF 加速。
  2. Container 模式向 “Multi-Network Pod” 演进:K8s 1.28 推出 DRA(动态资源分配),可在同一 Pod 内注入多个网络命名空间,sidecar 与主业务可分别归属不同 subnet。
  3. Host 模式与安全加固:利用 seccomp、AppArmor 限制 syscall,结合 BPF LSM 实现“网络隔离在系统调用层”,弥补 Host 模式隔离不足。
  4. 裸金属 Service Mesh:通过 Container 模式 + eBPF,sidecar 与业务共享 netns,但使用 BPF 程序做重定向,性能接近 Host,隔离接近 Bridge,成为 5G/AI 边缘混合云的新标准。
http://www.dtcms.com/a/469984.html

相关文章:

  • 南通市住房城乡建设局网站磁力蜘蛛种子搜索
  • 解决HTML塌陷的方法
  • sqlite 使用: 03-问题记录:在使用 sqlite3_bind_text 中设置 SQLITE_STATIC 参数时,处理不当造成的字符乱码
  • 网站建设与维护难不难为什么找别人做网站
  • 广州木马网站建设公司医院门户网站建设规划
  • 大模型学习之 深入理解编码器与解码器
  • pyqt 触摸屏监听
  • C++ Primer Plus 第六版 第十三章 编程题
  • 大模型前世今生(十二):Hessian矩阵
  • 蛙跳积分法:分子动力学模拟中的高效数值积分技术
  • 详解 SNMPv1 与 SNMPv2 Trap 格式
  • 书法网站建设成都微信公众号制作
  • 宜春网站制作公司wordpress图片上传慢
  • Python串口通信与MQTT物联网网关:连接STM32与物联网平台
  • MyLanViewer(局域网IP扫描软件)
  • 湛江专业建站推荐40平米小户型装修效果图
  • 147.《手写实现 Promise.all 与 Promise.race》
  • 【HarmonyOS】异步并发和多线程并发
  • 使用docker 安装dragonfly带配置文件(x86和arm)版本
  • 企业信息型网站有哪些网站建设塞西
  • 怎么看网站是什么程序做的益阳网络
  • SpringBoot通过配置类替换配置文件配置
  • 使用Customplot绘制时间-数据曲线
  • **量子算法:探索未来的发散创新之路**随着信息技术的飞速发展,量子计算作为
  • 4. 手写数字识别,推理,批处理
  • AI编程时代的文档困境与破局之道:从Cursor到完整开发体系
  • DVWA靶场之十八:API 安全(API Security)
  • ORB_SLAM2原理及代码解析:Optimizer::LocalBundleAdjustment
  • 中文wordpress站点wordpress 获取路径
  • 从零搭建 Kubernetes 1.28 高可用集群