本文记录一套 MCP Server 接入团队 AI 编程工具前的 Docker 隔离检查。目标不是讲 MCP 协议入门而是避免 MCP Server 直接继承主机权限导致文件、网络、Token 和镜像来源不可控。1. 适用场景假设团队准备接入这些 MCP ServerGit / 文件系统 Server。数据库查询 Server。浏览器自动化 Server。内部 API 查询 Server。如果这些 Server 直接跑在开发机或服务器主机上默认可能看到主机文件、环境变量、网络和本地凭据。上线前建议先容器化再开放给团队使用。2. 先做镜像预检先确认基础运行时能稳定拉取dockerpull docker.1ms.run/node:22-alpinedockerpull docker.1ms.run/python:3.12-slimdockerpull docker.1ms.run/redis:7这一步用于排除镜像来源问题。MCP Server 后续如果启动失败至少可以先确认不是基础镜像拉取导致。3. 文件类 MCP Server默认无网络文件类 Server 不一定需要访问外网建议先禁用网络只挂载明确目录services:mcp-files:image:docker.1ms.run/node:22-alpineuser:1000:1000working_dir:/workspaceread_only:truenetwork_mode:nonecap_drop:-ALLsecurity_opt:-no-new-privileges:truevolumes:-./server:/app:ro-./workspace:/workspace:ro-./mcp-tmp:/tmp:rwcommand:[node,/app/server.js]注意点不要挂载整个$HOME。不要把~/.ssh、云厂商凭据、浏览器 profile 放进去。workspace优先只读确实需要写入时再拆出单独目录。4. 数据库类 MCP Server只进指定网络数据库类 Server 不需要访问所有内网只需要访问数据库所在网络networks:mcp-db-net:internal:trueservices:mcp-db:image:docker.1ms.run/python:3.12-slimuser:1000:1000read_only:truecap_drop:-ALLsecurity_opt:-no-new-privileges:truenetworks:-mcp-db-netvolumes:-./server:/app:roenv_file:-./secrets/mcp-db.envcommand:[python,/app/server.py]secrets/mcp-db.env里不要放全库管理员账号优先使用只读账号、最小库表权限和短期 Token。5. 检查表检查项命令或动作镜像来源固定 image、tag必要时记录 digest容器用户检查是否非 root文件系统read_only: true只挂必要目录网络出口文件类默认network_mode: noneLinux 权限cap_drop: [ALL]提权限制no-new-privileges:true凭据env 文件权限收紧不进镜像日志不打印 Token、Cookie、连接串6. 结论MCP Server 接入 AI 工具前先把边界讲清楚。Docker 沙箱不能代替完整安全治理但它能把最容易失控的目录、网络、权限和镜像来源先收住。镜像拉取、运行时版本和依赖组件可以用毫秒镜像做预检真正的安全边界还要靠最小权限、网络策略、secret 管理和审计一起完成。