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

Docker容器间通信故障:无法从novnc容器curl访问web容器

容器间Docker网络通信失败问题解决

问题场景

我有两个Docker容器,尝试在容器间通过curl进行通信,已配置名为backend的bridge类型共享网络。docker-compose配置如下:

version: '3.8'
services:
  web:
    build: ./webapp/.
    container_name: storyweb
    command: python3 /app/manage.py runserver 0.0.0.0:8000
    volumes:
      - ./webapp/:/app/
    ports:
      - 8007:8000
    networks:
      - backend
    env_file:
      - ./.env.dev
  novnc:  
    container_name: dramatica
    build: ./dramatica/.
    environment:
      # Adjust to your screen size
      - DISPLAY_WIDTH=1200
      - DISPLAY_HEIGHT=800
      - PUID=1000
      - PGID=1000
    ports:
      - "8008:8080"
    volumes:
      - ./dramatica:/app
    networks:
      - backend
    restart: unless-stopped
    depends_on:
      - web 
    entrypoint: /app/entrypoint.sh
networks:
  backend:
    driver: bridge

尝试从novnc容器内部执行curl -i web:8007或curl -i storyweb:8007,均无法成功通信。

原因分析

  • 端口使用错误:容器间通信直接使用容器内部服务监听的端口,而非宿主机的端口映射。web容器的服务实际监听的是容器内的8000端口,8007是宿主机的映射端口,容器内部无法通过这个端口访问web服务。
  • 额外排查方向:
    • 验证web服务是否正常启动:进入web容器执行curl localhost:8000,确认服务本身可访问
    • 检查网络解析:在novnc容器内执行ping web或ping storyweb,确认容器名能正常解析到IP地址
    • 确认服务绑定地址:web服务已配置绑定0.0.0.0,确保容器外部(同网络内的其他容器)能访问,若绑定127.0.0.1则容器间无法访问

解决方法

在novnc容器内执行正确的curl命令,使用容器内部的8000端口:

curl -i web:8000
# 或使用容器名访问
curl -i storyweb:8000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:10:28