
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
wollomatic/socket-proxy:1.10.0 / ghcr.io/wollomatic/socket-proxy:1.10.0wollomatic/socket-proxy:1 / ghcr.io/wollomatic/socket-proxy:1socket-proxy 是一款轻量级、默认安全的Unix socket代理。尽管最初设计用于将Docker socket代理给Traefik,但也可用于其他场景。其设计深受 https://github.com/Tecnativa/docker-socket-proxy 启发。
额外优势在于,socket-proxy可用于检查客户端应用的API调用。与其他解决方案相比,其优势在于极小的容器镜像(from-scratch镜像),无任何外部依赖(无操作系统、无软件包,仅包含Go标准库)。设计以安全为核心,提供安全默认配置及额外安全层(基于IP地址的访问控制)。
允许列表按HTTP方法单独配置,使用Go正则表达式语法,支持细粒度控制允许的HTTP方法。
源代码托管于 https://github.com/wollomatic/socket-proxy%E3%80%82
[!NOTE] 从1.6.0版本开始,socket-proxy容器镜像也可在GHCR获取。
示例可在 https://github.com/wollomatic/socket-proxy/wiki 及仓库的examples目录中找到。
使用前需了解其工作原理。切勿将socket-proxy暴露到公网,仅用于安全环境。
容器镜像可在 https://hub.docker.com/r/wollomatic/socket-proxy 和 https://github.com/wollomatic/socket-proxy/pkgs/container/socket-proxy 获取。
如需固定版本,使用版本标签(如 wollomatic/socket-proxy:1.10.0 或 ghcr.io/wollomatic/socket-proxy:1.10.0)。如需始终使用最新版本,使用1标签(wollomatic/socket-proxy:1 或 ghcr.io/wollomatic/socket-proxy:1),该标签在无部署破坏性变更时保持有效。
可能存在带有testing标签的镜像,仅用于测试,其文档可能仅在GitHub提交消息中提供,不建议用于生产环境。
所有socket-proxy发布镜像均使用Cosign签名。公钥可在 https://raw.githubusercontent.com/wollomatic/socket-proxy/main/cosign.pub 和 [***] 获取。详情参见 https://github.com/wollomatic/socket-proxy/blob/main/SECURITY.md%E3%80%82%E8%87%AA1.6%E7%89%88%E6%9C%AC%E8%B5%B7%EF%BC%8C%E6%89%80%E6%9C%89%E5%A4%9A%E6%9E%B6%E6%9E%84%E9%95%9C%E5%83%8F%E5%9D%87%E5%B7%B2%E7%AD%BE%E5%90%8D%E3%80%82
由于默认安全设计,需显式允许所有访问。这是额外安全层,不能替代防火墙、网络分段等其他安全措施。切勿将socket-proxy暴露到公网。
配置TCP监听器
默认情况下,socket-proxy仅监听127.0.0.1。根据需求,可通过-listenip参数设置其他监听地址。在Docker镜像中使用时,几乎所有场景下-listenip=0.0.0.0为正确配置。
使用Unix socket替代TCP监听器
如需将Unix socket代理/过滤到新的Unix socket(而非TCP监听器),需通过-proxysocketendpoint参数或SP_PROXYSOCKETENDPOINT环境变量设置新Unix socket的路径,这将同时禁用TCP监听器。例如:-proxysocketendpoint=/tmp/filtered-socket.sock
[!NOTE] 1.10.0版本之前的socket-proxy将Unix socket的默认文件权限设为0400,而非文档中所述的0600。
配置IP地址或主机名允许列表
默认仅允许127.0.0.1/32连接到socket-proxy。可根据需求通过-allowfrom参数设置其他允许列表。除IP网络外,还可配置主机名,例如-allowfrom=traefik或-allowfrom=traefik,dozzle,以显式允许特定主机名连接。
配置请求允许列表
必须为客户端应用所需的每个HTTP方法配置正则表达式允许列表。参数名称为-allow后接HTTP方法(如-allowGET)。若设置该参数且入站请求匹配方法和路径正则表达式,则允许请求;未设置则禁止对应HTTP方法。
也可通过环境变量配置,变量名为SP_ALLOW_后接HTTP方法(如SP_ALLOW_GET)。若同时配置命令行参数和环境变量,环境变量将被忽略。
使用Go的正则表达式语法,字符串开头自动添加^,结尾自动添加`# socket-proxy
wollomatic/socket-proxy:1.10.0 / ghcr.io/wollomatic/socket-proxy:1.10.0wollomatic/socket-proxy:1 / ghcr.io/wollomatic/socket-proxy:1socket-proxy 是一款轻量级、默认安全的Unix socket代理。尽管最初设计用于将Docker socket代理给Traefik,但也可用于其他场景。其设计深受 https://github.com/Tecnativa/docker-socket-proxy 启发。
额外优势在于,socket-proxy可用于检查客户端应用的API调用。与其他解决方案相比,其优势在于极小的容器镜像(from-scratch镜像),无任何外部依赖(无操作系统、无软件包,仅包含Go标准库)。设计以安全为核心,提供安全默认配置及额外安全层(基于IP地址的访问控制)。
允许列表按HTTP方法单独配置,使用Go正则表达式语法,支持细粒度控制允许的HTTP方法。
源代码托管于 https://github.com/wollomatic/socket-proxy%E3%80%82
[!NOTE] 从1.6.0版本开始,socket-proxy容器镜像也可在GHCR获取。
示例可在 https://github.com/wollomatic/socket-proxy/wiki 及仓库的examples目录中找到。
使用前需了解其工作原理。切勿将socket-proxy暴露到公网,仅用于安全环境。
容器镜像可在 https://hub.docker.com/r/wollomatic/socket-proxy 和 https://github.com/wollomatic/socket-proxy/pkgs/container/socket-proxy 获取。
如需固定版本,使用版本标签(如 wollomatic/socket-proxy:1.10.0 或 ghcr.io/wollomatic/socket-proxy:1.10.0)。如需始终使用最新版本,使用1标签(wollomatic/socket-proxy:1 或 ghcr.io/wollomatic/socket-proxy:1),该标签在无部署破坏性变更时保持有效。
可能存在带有testing标签的镜像,仅用于测试,其文档可能仅在GitHub提交消息中提供,不建议用于生产环境。
所有socket-proxy发布镜像均使用Cosign签名。公钥可在 https://raw.githubusercontent.com/wollomatic/socket-proxy/main/cosign.pub 和 [***] 获取。详情参见 https://github.com/wollomatic/socket-proxy/blob/main/SECURITY.md%E3%80%82%E8%87%AA1.6%E7%89%88%E6%9C%AC%E8%B5%B7%EF%BC%8C%E6%89%80%E6%9C%89%E5%A4%9A%E6%9E%B6%E6%9E%84%E9%95%9C%E5%83%8F%E5%9D%87%E5%B7%B2%E7%AD%BE%E5%90%8D%E3%80%82
由于默认安全设计,需显式允许所有访问。这是额外安全层,不能替代防火墙、网络分段等其他安全措施。切勿将socket-proxy暴露到公网。
配置TCP监听器
默认情况下,socket-proxy仅监听127.0.0.1。根据需求,可通过-listenip参数设置其他监听地址。在Docker镜像中使用时,几乎所有场景下-listenip=0.0.0.0为正确配置。
使用Unix socket替代TCP监听器
如需将Unix socket代理/过滤到新的Unix socket(而非TCP监听器),需通过-proxysocketendpoint参数或SP_PROXYSOCKETENDPOINT环境变量设置新Unix socket的路径,这将同时禁用TCP监听器。例如:-proxysocketendpoint=/tmp/filtered-socket.sock
[!NOTE] 1.10.0版本之前的socket-proxy将Unix socket的默认文件权限设为0400,而非文档中所述的0600。
配置IP地址或主机名允许列表
默认仅允许127.0.0.1/32连接到socket-proxy。可根据需求通过-allowfrom参数设置其他允许列表。除IP网络外,还可配置主机名,例如-allowfrom=traefik或-allowfrom=traefik,dozzle,以显式允许特定主机名连接。
配置请求允许列表
必须为客户端应用所需的每个HTTP方法配置正则表达式允许列表。参数名称为-allow后接HTTP方法(如-allowGET)。若设置该参数且入站请求匹配方法和路径正则表达式,则允许请求;未设置则禁止对应HTTP方法。
也可通过环境变量配置,变量名为SP_ALLOW_后接HTTP方法(如SP_ALLOW_GET)。若同时配置命令行参数和环境变量,环境变量将被忽略。
使用Go的正则表达式语法,字符串开头自动添加^,结尾自动添加。无效正则表达式将导致程序终止。
命令行示例:
'-allowGET=/v1\..{1,2}/(version|containers/.*|events.*)' 可用于允许Traefik v2访问Docker socket'-allowHEAD=.* 允许所有HEAD请求环境变量示例:
'SP_ALLOW_GET="/v1\..{1,2}/(version|containers/.*|events.*)"' 可用于允许Traefik v2访问Docker socket'SP_ALLOW_HEAD=".*" 允许所有HEAD请求更多信息参见 Go正则表达式文档,在线测试工具推荐 regex101.com。
如需确定客户端应用使用的HTTP请求,可在安全环境中将socket-proxy日志级别设为debug并允许所有请求,然后查看日志输出。
配置绑定挂载限制
默认不限制绑定挂载。如需通过限制绑定挂载源目录增强安全性,可使用-allowbindmountfrom参数或SP_ALLOWBINDMOUNTFROM环境变量。配置后,仅允许从指定目录及其子目录进行绑定挂载,目录需以/开头,多个目录用逗号分隔。
示例:
-allowbindmountfrom=/home,/var/log 允许从/home、/var/log及其子目录(如/home/user/data或/var/log/app)进行绑定挂载SP_ALLOWBINDMOUNTFROM="/app/data,/tmp" 允许从/app/data和/tmp目录进行绑定挂载绑定挂载限制适用于相关Docker API端点,支持传统绑定挂载语法(-v /host/path:/container/path)和现代挂载语法。
注意:该功能仅限制绑定挂载,不影响其他挂载类型(卷、tmpfs等)。
默认禁用健康检查。由于socket-proxy容器可能不暴露到公网,镜像中包含独立健康检查二进制文件。如需启用,需设置-allowhealthcheck参数或SP_ALLOWHEALTHCHECK=true环境变量。然后可通过如下docker-compose片段配置健康检查:
compose# [...] healthcheck: test: ["CMD", "./healthcheck"] interval: 10s timeout: 5s retries: 2 # [...]
在某些情况下(如Docker引擎更新后),socket连接可能中断导致客户端应用故障。可配置socket-proxy定期检查socket可用性,若不可用则停止,以便容器编排工具重启。默认禁用该功能。如需启用,设置-watchdoginterval参数(或SP_WATCHDOGINTERVAL环境变量)为检查间隔(秒),并设置-stoponwatchdog参数(或SP_STOPONWATCHDOG=true)。若未设置-stoponwatchdog,监控仅记录错误日志并继续运行(问题仍存在)。
需了解如何在此环境中安装Traefik,示例参见 https://github.com/wollomatic/traefik2-hardened%E3%80%82
可通过docker compose部署:
composeservices: dockerproxy: image: wollomatic/socket-proxy:<<version>> # 选择最新镜像 restart: unless-stopped user: "65534:<<你的Docker组ID>>" mem_limit: 64M read_only: true cap_drop: - ALL security_opt: - no-new-privileges command: - '-loglevel=info' - '-listenip=0.0.0.0' - '-allowfrom=traefik' # 仅允许主机名"traefik"连接 - '-allowGET=/v1\..{1,2}/(version|containers/.*|events.*)' - '-allowbindmountfrom=/var/log,/tmp' # 限制绑定挂载到特定目录 - '-watchdoginterval=3600' # 每小时检查一次socket可用性 - '-stoponwatchdog' # 出错时停止程序,让compose重启 - '-shutdowngracetime=5' # 关闭前等待5秒 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro networks: - docker-proxynet # 切勿暴露到公网! # 这是仅Traefik和socket-proxy使用的私有网络 # 不同于traefik-servicenet traefik: # [...] 完整示例参见github.com/wollomatic/traefik-hardened depends_on: - dockerproxy networks: - traefik-servicenet # Traefik公共网络 - docker-proxynet # 仅限制Traefik和socket-proxy使用 networks: traefik-servicenet: external: true docker-proxynet: driver: bridge internal: true
如需记录客户端应用的API调用,将日志级别设为DEBUG并允许所有请求,然后查看日志输出。允许所有请求的参数配置如下:
- '-loglevel=debug' - '-allowGET=.*' - '-allowHEAD=.*' - '-allowPOST=.*' - '-allowPUT=.*' - '-allowPATCH=.*' - '-allowDELETE=.*' - '-allowCONNECT=.*' - '-allowTRACE=.*' - '-allowOPTIONS=.*'
socket-proxy可通过命令行参数或环境变量配置,若同时设置,环境变量将被忽略。
| 参数 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
-allowfrom | SP_ALLOWFROM | 127.0.0.1/32 | 指定允许连接代理的客户端IP地址或主机名(逗号分隔)。默认仅允许本地连接,这是默认安全设计。允许所有IPv4地址可设为-allowfrom=0.0.0.0/0;也可设主机名,如-allowfrom=traefik或-allowfrom=traefik,dozzle。无论如何,切勿将socket-proxy暴露到公网。 |
-allowbindmountfrom | SP_ALLOWBINDMOUNTFROM | (未设置) | 指定允许作为绑定挂载源的目录(逗号分隔)。未设置则不限制;设置后仅允许从指定目录及其子目录进行绑定挂载,目录需以/开头。例如-allowbindmountfrom=/home,/var/log允许从/home、/var/log及其子目录挂载。 |
-allowhealthcheck | SP_ALLOWHEALTHCHECK | (未设置/false) | 若设置,允许内置健康检查二进制文件通过TCP端口55555(127.0.0.1:55555/health)检查socket连接。 |
-listenip | SP_LISTENIP | 127.0.0.1 | 指定服务器绑定的IP地址。 |
-logjson | SP_LOGJSON | (未设置/false) | 若设置,启用JSON格式日志;否则为纯文本格式。 |
-loglevel | SP_LOGLEVEL | INFO | 设置日志级别,可选值:DEBUG、INFO、WARN、ERROR。 |
-proxyport | SP_PROXYPORT | 2375 | 定义代理监听的TCP端口。 |
-shutdowngracetime | SP_SHUTDOWNGRACETIME | 10 | 收到sigterm或sigint后,等待优雅关闭TCP服务器的时间(秒)。 |
-socketpath | SP_SOCKETPATH | /var/run/docker.sock | 指定要连接的Unix socket路径,默认连接Docker守护进程socket。 |
-stoponwatchdog | SP_STOPONWATCHDOG | (未设置/false) | 若设置,监控检测到Unix socket不可用时将停止socket-proxy。 |
-watchdoginterval | SP_WATCHDOGINTERVAL | 0 | 检查socket可用性的间隔(秒),0或未设置则禁用检查。 |
-proxysocketendpoint | SP_PROXYSOCKETENDPOINT | (未设置) | 代理到指定Unix socket,而非TCP端口。 |
-proxysocketendpointfilemode | SP_PROXYSOCKETENDPOINTFILEMODE | 0600 | 为过滤后的Unix socket端点显式设置文件权限(仅与-proxysocketendpoint一起使用)。 |
1.0 - 初始版本
1.1 - 为-allowfrom参数添加主机名支持
1.2 - 重新格式化程序启动时允许列表的日志输出
1.3 - 允许在-allowfrom参数中使用逗号分隔的多个主机名(感谢https://github.com/ildyria%EF%BC%89
1.4 - 允许通过环境变量配置
1.5 - 允许将Unix socket作为代理/过滤端点
1.6 - Cosign:签名多架构容器镜像及所有关联的独立镜像。镜像也在GHCR提供。
1.7 - 允许在-allowfrom中使用逗号分隔的CIDR(不仅是1.3+版本中的主机名)
1.8 - 添加可选的绑定挂载限制(感谢https://github.com/powerman%E3%80%81https://github.com/C4tWithShell%EF%BC%89
1.9 - 为-listenip添加IPv6支持(感谢https://github.com/op3%EF%BC%89
1.10 - 修复socket文件权限(感谢https://github.com/amanda-wee%EF%BC%89%EF%BC%8C%E4%BC%98%E5%8C%96%E6%9E%84%E5%BB%BA%E6%93%8D%E4%BD%9C%EF%BC%88%E6%84%9F%E8%B0%A2https://github.com/reneleonhardt%EF%BC%89
本项目采用MIT许可证 - 详见LICENSE文件。
文件cmd/internal/bindmount.go的部分内容采用Apache 2.0许可证。详见该文件注释和LICENSE文件。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务