SlimToolkit(Slim)无需修改 Dockerfile 或工作流,即可分析、精简并加固现有容器镜像。
Tecnativa/docker-socket-proxy
一个安全增强的 Docker Socket 代理,通过环境变量按 API 分区放行或拦截请求。
- Star
- 2,850
- Fork
- 211
- 未关闭 Issue
- 57
- 最近提交
- 2个月前
这是什么?
Docker Socket Proxy 位于服务与 Docker socket 之间,用于过滤哪些 Docker API 请求可以通过。直接把 socket 挂载进容器等同于给予宿主机 root 权限,但部分服务又需要它来监听事件或管理容器。使用该代理后,可以只开放服务真正需要的 API 部分。
代理基于 Alpine 版 HAProxy 镜像,配合一份精简的配置文件运行。每个 API 分区由一个环境变量控制:设为 1 表示放行,设为 0 表示拦截,被拦截的请求会返回 HTTP 403。EVENTS、PING、VERSION 默认放行;AUTH、SECRETS 以及通过 POST 的写操作等安全敏感部分默认关闭。
镜像不提供 TLS,设计上应只在专用的 Docker 网络内使用,不要暴露到公网。它支持通过 SOCKET_PATH 指定非标准 socket 路径(例如 balenaOS),也可以通过 LOG_LEVEL 调整日志级别。镜像同时发布在 Docker Hub 和 GitHub Container Registry。
核心功能
- 01通过按分区设置的环境变量放行或拦截 Docker API。
- 02被拦截的请求返回 HTTP 403。
- 03关闭 POST 后可实现只读访问。
- 04支持通过 SOCKET_PATH 指定自定义 socket 路径。
- 05基于 Alpine 与 HAProxy 构建,配置简洁。
- 06覆盖 1.27 至 1.51 等多个 Docker API 版本。
适用场景
- 让监控或反向代理容器只读地获取容器事件。
- 限制 CI 或自动化工具,使其无法在宿主机上执行高权限操作。
- 只向服务发现工具开放其所需的 Docker API 分区。
快速上手
- 1
运行带有 Docker 套接字访问权限的代理容器
docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy - 2
将本地 Docker 客户端指向该代理
export DOCKER_HOST=tcp://localhost:2375 - 3
使用 docker version 验证连接
docker version
使用前须知
- 容器需要使用 --privileged 运行,README 称这是连接 Docker 套接字所必需的。
- 镜像不支持 TLS,流量为明文 HTTP,必须限制在受控网络中使用。
- 出于安全考虑,关键 API 部分默认禁用,需要手动显式开启。
收录于专题
标签
常见问题
- docker-socket-proxy 是什么?
- 一个安全增强的 Docker Socket 代理,通过环境变量按 API 分区放行或拦截请求。 Docker Socket Proxy 位于服务与 Docker socket 之间,用于过滤哪些 Docker API 请求可以通过。直接把 socket 挂载进容器等同于给予宿主机 root 权限,但部分服务又需要它来监听事件或管理容器。使用该代理后,可以只开放服务真正需要的 API 部分。
- docker-socket-proxy 可以免费使用吗?用的什么许可证?
- docker-socket-proxy 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- docker-socket-proxy 还在维护吗?
- 半年内有更新。docker-socket-proxy 最近一次提交是在 2026年8月31日。
- docker-socket-proxy 适合用来做什么?
- 让监控或反向代理容器只读地获取容器事件。 限制 CI 或自动化工具,使其无法在宿主机上执行高权限操作。 只向服务发现工具开放其所需的 Docker API 分区。
- docker-socket-proxy 怎么安装和运行?
- 运行带有 Docker 套接字访问权限的代理容器: docker container run -d --privileged --name dockerproxy -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 tecnativa/docker-socket-proxy 将本地 Docker 客户端指向该代理: export DOCKER_HOST=tcp://localhost:2375 使用 docker version 验证连接: docker version
- 在哪里获取 docker-socket-proxy?
- 源代码和安装说明在 GitHub 上:https://github.com/Tecnativa/docker-socket-proxy
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用于在本地图形化构建、运行和管理容器与 Kubernetes 的桌面应用,基于 Podman 等容器引擎。
开源云原生容器镜像仓库,可存储、签名和扫描镜像与 Helm Chart,支持权限控制与跨仓库复制。
Bitnami 维护的一组热门开源应用容器镜像,开箱即用,并经过安全加固。
一款支持 TLS 的交互式拦截 HTTP 代理,提供终端、命令行和 Web 三种界面,用于查看 HTTP/1、HTTP/2 和 WebSocket 流量。
本地隐私脱敏网关,请求发往大模型前自动打码,回复流式还原原文。