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

如何从VirtualBox外部访问docker-compose部署的crAPI容器?

解决Windows宿主机无法访问Ubuntu虚拟机内Docker部署的OWASP crAPI问题

核心问题定位

你的docker-compose.yml里crapi-web的端口绑定默认限制了仅本地访问:

ports:
  - "${LISTEN_IP:-127.0.0.1}:8888:80"

127.0.0.1意味着这个8888端口只在Ubuntu虚拟机内部监听,外部设备(比如Windows)根本连不上这个端口,这就是问题根源。

具体解决步骤

  1. 修改端口绑定配置
    打开docker-compose.yml,把crapi-web的ports配置改成允许所有IP访问:

    crapi-web:
        container_name: crapi-web
        image: crapi/crapi-web:${VERSION:-latest}
        ports:
          - "${LISTEN_IP:-0.0.0.0}:8888:80"
    

    或者直接写死绑定0.0.0.0(跳过环境变量):

    ports:
      - "0.0.0.0:8888:80"
    
  2. 重启容器生效
    先停止现有容器,再重新启动:

    sudo docker-compose -f docker-compose.yml --compatibility down
    sudo docker-compose -f docker-compose.yml --compatibility up -d
    
  3. 验证端口监听状态
    在Ubuntu终端执行命令,确认端口已经开放给所有IP:

    netstat -tulpn | grep 8888
    

    输出里应该显示0.0.0.0:8888或者你的Ubuntu桥接IP192.168.1.102:8888,而不是127.0.0.1:8888。

  4. Windows端访问测试
    打开Windows浏览器,直接访问http://192.168.1.102:8888即可正常访问crAPI前端。

补充说明

  • Windows ping不通容器IP(172.19.0.9)是正常现象,因为这个IP属于Docker在Ubuntu内部创建的私有网桥网段,宿主机Windows无法直接访问这个网段,不需要纠结这个,只要能通过Ubuntu的IP+端口访问服务就没问题。
  • 之前NAT模式端口转发失败,也是因为容器端口只绑定了Ubuntu本地的127.0.0.1,转发过来的请求到了Ubuntu后还是无法触达容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:05:12