You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器通过Tor网络发起请求时遇连接拒绝问题求助

问题原因

容器内的127.0.0.1指向容器自身的网络栈,而非宿主机上运行的Privoxy服务,所以容器无法连接到代理。宿主机上的curl能正常工作是因为它直接访问的是宿主机本地的Privoxy。

解决方法

方法1:使用宿主机IP或Docker专属别名

  • 若使用Docker Desktop(Windows/macOS),可直接用官方提供的宿主机别名host.docker.internal替换127.0.0.1:
    docker run --rm --env HTTP_PROXY=http://host.docker.internal:8118 --env HTTPS_PROXY=http://host.docker.internal:8118 basic_ip_docker
    
  • 若使用Linux Docker,先查看宿主机的局域网IP(比如192.168.1.100),替换为该IP后运行容器:
    docker run --rm --env HTTP_PROXY=http://192.168.1.100:8118 --env HTTPS_PROXY=http://192.168.1.100:8118 basic_ip_docker
    

方法2:修改Privoxy配置允许Docker子网访问

默认Privoxy仅监听127.0.0.1,需调整配置开放外部访问:

  1. 打开Privoxy配置文件(通常路径为/etc/privoxy/config)
  2. 找到listen-address项,将其从127.0.0.1:8118修改为0.0.0.0:8118(允许所有IP访问),或指定Docker默认子网(如172.17.0.0/16):
    listen-address 0.0.0.0:8118
    
  3. 重启Privoxy服务:
    sudo systemctl restart privoxy
    
  4. 之后用宿主机IP或host.docker.internal运行容器即可。

方法3:用Docker Compose统一管理服务(推荐)

将Privoxy/Tor和业务容器放在同一Docker网络中,避免IP依赖:

  1. 创建docker-compose.yml文件:
    version: '3'
    services:
      privoxy:
        image: privoxy/privoxy:latest
        ports:
          - "8118:8118"
        depends_on:
          - tor
      tor:
        image: torproject/tor:latest
        command: tor --SocksPort 9050
      app:
        build: . # 指向你的业务容器Dockerfile路径
        environment:
          - HTTP_PROXY=http://privoxy:8118
          - HTTPS_PROXY=http://privoxy:8118
        depends_on:
          - privoxy
    
  2. 运行服务:
    docker-compose up --build
    

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:17:33