
11notes/socket-proxySOCKET-PROXY是一个安全访问Docker socket的代理镜像,旨在通过只读权限、非root用户运行及无发行版(distroless)设计,增强容器环境中Docker socket的访问安全性。该镜像将Docker socket代理为只读模式,暴露的代理socket以1000:1000用户组运行,同时可选启动TCP端点(2375端口)用于代理访问。适用于需要限制Docker socket访问权限的场景,如反向代理、容器管理工具等,可有效降低直接暴露Docker socket带来的安全风险。
以下是与Traefik配合使用的docker-compose示例:
yamlname: "reverse-proxy" services: socket-proxy: # 用于将Docker socket以只读方式暴露给Traefik # 详情参见[***] image: "11notes/socket-proxy:2.1.6" read_only: true # 只读模式运行 user: "0:0" # 根据实际Docker socket权限调整UID/GID,错误时容器会提示正确值 environment: TZ: "Europe/Zurich" # 设置时区 volumes: - "/run/docker.sock:/run/docker.sock:ro" # 挂载Docker socket(只读) - "socket-proxy.run:/run/proxy" # 代理socket存储卷 restart: "always" traefik: depends_on: socket-proxy: condition: "service_healthy" # 依赖socket-proxy健康状态 restart: true image: "11notes/traefik:3.5.0" read_only: true # 省略Traefik其他配置... volumes: - "socket-proxy.run:/var/run" # 挂载代理socket # 省略其他配置... volumes: socket-proxy.run: # 代理socket存储卷 networks: # 省略网络配置...
若Docker socket权限与容器用户不匹配,容器会输出错误提示并建议正确的UID/GID配置,例如:
shellsocket-proxy-1 | 2025/03/26 10:16:33 can’t access docker socket as GID 0 owned by GID 991 socket-proxy-1 | please change the user setting in your compose to the correct UID/GID pair like this: socket-proxy-1 | services: socket-proxy-1 | socket-proxy: socket-proxy-1 | user: "0:991"
需根据提示调整user字段。
默认不暴露TCP端点,如需启用,需在compose中添加端口映射:
yamlports: - "2375:2375/tcp" # 暴露TCP代理端点
即使通过GET请求,以下Docker API端点仍被阻止访问,增强安全性:
| 参数 | 说明 | 默认值 |
|---|---|---|
TZ | 时区(参考tz数据库列表) | 无 |
DEBUG | 启用调试模式(容器和应用) | 无 |
SOCKET_PROXY_VOLUME | 代理socket存储卷路径 | /run/proxy |
SOCKET_PROXY_DOCKER_SOCKET | Docker socket实际路径 | /run/docker.sock |
SOCKET_PROXY_UID | 运行代理进程的UID | 1000 |
SOCKET_PROXY_GID | 运行代理进程的GID | 1000 |
SOCKET_PROXY_KEEPALIVE | 与Docker socket的连接保活间隔 | 10s |
SOCKET_PROXY_TIMEOUT | 与Docker socket的连接超时时间 | 30s |
:2(固定主版本)、:2.1(固定次版本):rolling标签,但可能包含破坏性变更,风险自负可从以下仓库拉取镜像:
shelldocker pull 11notes/socket-proxy:2.1.6 docker pull ghcr.io/11notes/socket-proxy:2.1.6 docker pull quay.io/11notes/socket-proxy:2.1.6
user配置,容器启动错误时会提示正确UID/GID
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务