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

Docker中Bot容器无法通过服务名访问Chrome容器的问题解决

解决Docker中Bot容器无法通过服务名访问Chrome容器的问题

问题描述

使用Surfshark VPN容器让Chrome容器通过VPN访问互联网,配置如下:

version: '3'
services:
  bot:
    restart: always
    build: .
    ports:
      - "1111:1111"
  chrome:
    image: browserless/chrome
    network_mode: service:surfshark
  surfshark:
    image: ilteoood/docker-surfshark
    container_name: surfshark
    environment:
      - SURFSHARK_USER=$SURFSHARK_USER
      - SURFSHARK_PASSWORD=$SURFSHARK_PASSWORD
      - SURFSHARK_COUNTRY=es
      - CONNECTION_TYPE=udp
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    restart: unless-stopped
    dns:
      - 1.1.1.1

尝试从Bot容器通过服务名chrome访问Chrome容器时,执行wget http://chrome报错wget: bad address 'chrome'。

问题原因

当Chrome容器设置network_mode: service:surfshark时,它会共享Surfshark容器的网络命名空间,意味着Chrome容器没有独立的IP地址,Docker Compose也不会为它创建chrome服务名对应的DNS解析条目,因此Bot容器无法通过chrome服务名找到它。

解决方案

方法1:通过Surfshark服务名/容器名访问Chrome

由于Chrome和Surfshark共享网络,Chrome的服务端口直接绑定在Surfshark容器的网络上,因此Bot容器可以直接使用Surfshark的服务名或容器名访问Chrome。

假设browserless/chrome默认监听端口为3000(若有修改则对应调整),在Bot容器内执行:

wget http://surfshark:3000

方法2:自定义网络并保留Chrome服务名访问(更灵活)

若希望继续使用chrome服务名访问,可以创建自定义桥接网络,让所有容器加入该网络,并调整Surfshark配置以允许子网流量通过VPN:

修改后的docker-compose.yaml配置:

version: '3'
networks:
  vpn-shared-net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.25.0.0/16

services:
  bot:
    restart: always
    build: .
    ports:
      - "1111:1111"
    networks:
      - vpn-shared-net

  chrome:
    image: browserless/chrome
    networks:
      - vpn-shared-net
    depends_on:
      - surfshark
    # 配置Chrome通过Surfshark代理访问网络
    environment:
      - HTTP_PROXY=http://surfshark:3128
      - HTTPS_PROXY=http://surfshark:3128

  surfshark:
    image: ilteoood/docker-surfshark
    container_name: surfshark
    environment:
      - SURFSHARK_USER=$SURFSHARK_USER
      - SURFSHARK_PASSWORD=$SURFSHARK_PASSWORD
      - SURFSHARK_COUNTRY=es
      - CONNECTION_TYPE=udp
      # 允许自定义子网的流量通过VPN
      - ADDITIONAL_SUBNETS=172.25.0.0/16
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    restart: unless-stopped
    dns:
      - 1.1.1.1
    networks:
      vpn-shared-net:
        ipv4_address: 172.25.0.2
    # 开启HTTP代理端口,供Chrome使用
    ports:
      - "3128:3128"

配置完成后,Bot容器即可通过chrome服务名访问Chrome:

wget http://chrome:3000

内容的提问来源于stack exchange,提问作者Роман Сергеевич

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:17:40