如何通过 Docker 网络命名空间隔离机制实现生产测试网络共存指南

浅婷同学_2262

浅婷同学_2262

2026-07-02

945人浏览

原创

关键在于用自定义bridge网络为生产与测试环境分别创建独立netns,如prod-net和test-net,二者默认路由隔离、互不可达;须禁用host/container模式、关闭默认bridge互通,并通过cni或iptables补强东西向策略,最后实测验证netns分离与跨网不通。

如何通过 docker 网络命名空间隔离机制实现生产测试网络共存指南

要让生产环境和测试环境在同一个 Docker 主机上安全共存,关键不是“物理隔离”,而是利用网络命名空间(netns)构建逻辑上互不可见、策略可控的通信边界。Docker 本身不提供“多环境自动隔离”,但它的网络模型天然支持这种分层控制——核心在于选对网络驱动、配好网络模式,并辅以显式策略约束。

用自定义 bridge 网络划分环境域

默认的 bridge 网络(docker0)所有容器默认可互通,不适合混跑生产与测试。必须创建独立的自定义 bridge 网络,为每个环境分配专属 netns:

  • 为生产环境建网:docker network create --driver bridge --subnet=192.168.100.0/24 prod-net
  • 为测试环境建网:docker network create --driver bridge --subnet=192.168.200.0/24 test-net
  • 启动容器时显式指定网络:docker run --network prod-net --name api-prod ...docker run --network test-net --name api-test ...
  • 两个网络之间默认无路由,pingcurl 均不通——这是 netns 隔离的直接体现,无需额外防火墙规则

禁用跨网通信,堵住隐式连通路径

即使用了不同 bridge 网络,仍需防范三类常见“破防”场景:

Docker Ctl
Docker Ctl

使用 podman 检查容器、日志和镜像

下载
  • 避免使用 host 模式:任何容器若启用 --network=host,就完全退出 netns 隔离,能直接访问宿主机所有端口,也暴露自身服务——生产与测试容器都应禁止该模式
  • 慎用 container 模式共享 netns:如 --network=container:api-prod 会让新容器和生产 API 共享 IP 与端口空间,极易引发端口冲突或越权访问
  • 关闭默认 bridge 的容器互通:可通过 dockerd 启动参数 --default-network=none 或在 daemon.json 中设 "default-address-pools": [],强制所有容器必须显式指定网络

用 network policy 或 iptables 补强东西向控制

自定义 bridge 提供基础隔离,但无法精细控制“谁可以访问谁”。若需更细粒度策略(例如:测试数据库只允许测试应用访问,禁止生产应用探测):

  • 推荐使用 CNI 插件(如 Calico 或 Cilium),它们在每个容器 netns 内注入 eBPF 或 iptables 规则,实现 Pod/容器级策略
  • 若用原生 Docker,可在宿主机上针对 docker0 或自定义网桥的 veth 接口加 iptables 规则,例如:iptables -I FORWARD -i vethabc123 -o vethdef456 -j DROP(需根据实际 veth 名动态匹配)
  • 也可在容器启动时注入轻量级防火墙工具(如 nftables),在 netns 内部设白名单端口

验证隔离是否真正生效

不能只靠“没配置就不通”,必须实测验证 netns 边界:

  • 查两个容器是否处于不同 netns:docker inspect -f '{{.State.Pid}}' api-prod → 得到 PID A;再查 PID B;然后执行 ls -l /proc/A/ns/netls -l /proc/B/ns/net,确认 inode 编号不同
  • 从 prod 容器内尝试访问 test 容器 IP:docker exec api-prod ping 192.168.200.2,应超时
  • 检查路由表:docker exec api-prod ip route,输出中不应出现 test-net 的子网路由
  • 抓包验证:docker exec api-prod tcpdump -i eth0 port 6379,在 test 容器发 Redis 请求,应无捕获数据包

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker docker 网络

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

625

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4279

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5137

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

1913

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

199

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

351

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

340

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

245

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

365

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习