首页/云/Docker 容器速查/挂载 docker.sock 的风险与控制
资源与安全50 条

挂载 docker.sock 的风险与控制

把 /var/run/docker.sock 挂进容器等于把守护进程控制权交给它:可创建特权容器并访问宿主资源,属高危配置,需严格限定场景。

Docker 容器速查云更新于 2026-10-13

为什么这是高危配置

把容器运行时的套接字文件挂进容器,等于把守护进程的控制权交了出去:容器内可以通过接口创建新容器、读写宿主文件系统、启动特权容器,权限面接近宿主高权限。这类配置在持续集成与部署代理场景里很常见,但它属于高危项,需要严格限定使用范围并纳入审计。

基本信息

风险容器可经套接字控制宿主的容器运行时
识别方式检查挂载列表里是否出现该套接字路径
常见来源持续集成构建容器、部署代理、监控采集工具
替代方案用代理网关收敛可调用接口、使用专用环境或无守护进程模式
同等权限宿主上加入对应用户组

典型使用场景

  • 审计存量容器,找出挂载了该套接字的实例
  • 评估构建任务与宿主之间的权限边界
  • 用代理方式把可调用的接口收敛到白名单
  • 迁移到无守护进程模式以降低权限面
  • 权限评审时把用户组授权一并纳入清单

排查挂载情况

排查挂载情况
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{println}}{{end}}' ci-runner
docker ps -q | xargs -r docker inspect -f '{{.Name}} {{range .Mounts}}{{.Source}} {{end}}'   # 全量排查
docker ps -a -q | xargs -r docker inspect -f '{{.Name}} {{json .HostConfig.Binds}}'          # 含已停止容器

风险与处置

方面说明注意
权限面等效宿主高权限可创建特权容器
识别方式挂载列表出现套接字路径需覆盖已停止容器
替代方案代理网关收敛接口按需放开具体端点
同等风险宿主用户组授权两类要一起审计
宿主上把账号加入对应用户组,同样等于获得这个权限面,两者都要纳入权限审计与最小化名单。
挂载时加只读参数并不能阻止通过接口执行特权操作,不要把只读挂载当作缓解措施。
审计结果要留档:记录哪些容器挂载了该套接字、用途是什么、由谁确认过必要性,后续收敛才有依据。

易错点

  • 把只读挂载当作缓解手段:接口调用不受该参数限制,风险依旧存在
  • 构建机把套接字暴露给不可信任务:宿主与其他构建之间的隔离边界被打破
  • 只审计运行中的容器:已停止的容器在下次启动时同样持有该权限
  • 只盯容器不查用户组授权:宿主账号侧的授权是同一权限面的另一个入口

数据来源与参考

  • Docker 官方文档:Docker socket 安全提示(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌