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

Django Channels启动Redis Docker容器报端口已占用问题咨询

问题根因

报错核心为宿主机6379端口已被其他进程占用,Docker无法将Redis容器的6379端口绑定到宿主机对应端口,因此启动失败。你看到的一长串十六进制字符串是Docker提前生成的容器ID,后续端口绑定流程失败后,这个容器会以退出状态残留。

排查步骤
  • 定位占用6379端口的进程:
    • Mac/Linux系统执行:lsof -i :6379 或 ss -tulpn | grep 6379
    • Windows系统执行:netstat -ano | findstr :6379
      执行后可拿到占用端口的进程PID,常见占用场景包括:本地安装的Redis服务后台自启、之前启动未正常销毁的Redis容器、其他默认使用6379端口的服务。
  • 检查是否为遗留Docker容器占用端口:执行docker ps查看所有正在运行的容器,确认列表中是否有已启动的Redis服务。
  • 检查本次启动的残留容器:执行docker ps -a,可以看到报错信息中提到的名为hopeful_jemison的退出状态容器,这是本次启动失败留下的残留实例。
解决方案

根据你的实际需求二选一即可:

方案1:释放6379端口,沿用官方文档的启动命令

  1. 停掉占用6379端口的进程:
    • 如果是本地安装的Redis服务占用:
      • Windows:执行net stop redis,或在服务面板找到Redis服务手动停止
      • Mac(Homebrew安装):执行brew services stop redis
      • Linux(systemd管理):执行sudo systemctl stop redis
    • 如果是正在运行的旧Docker容器占用:执行docker ps拿到对应容器ID,执行docker stop <容器ID>停掉容器,不需要保留的话可以追加执行docker rm <容器ID>删除。
  2. 清理本次启动失败的残留容器:执行docker rm hopeful_jemison
  3. 重新执行原启动命令即可:docker run -p 6379:6379 -d redis:5

方案2:保留现有占用6379的服务,更换映射端口

如果占用6379端口的服务你需要继续使用,不需要停止,可以直接修改Docker命令的宿主机映射端口,比如将宿主机端口改为6380,启动命令为:
docker run -p 6380:6379 -d redis:5
注意:更换端口后,需要同步修改Django Channels配置中的Redis连接地址,将原配置里的6379端口改为你实际映射的宿主机端口(比如示例中的6380),否则Channels无法正常连接到Redis服务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:01:08