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

Windows Docker搭建Redis集群绑定IP报错及外部应用无法访问问题

问题核心原因

  1. Docker for Windows 不支持 network_mode: "host" 配置,该网络驱动仅适配Linux环境,你配置的host模式完全未生效,容器端口没有直接绑定到Windows宿主机的网络栈上,因此外部无法访问。
  2. 你尝试将redis.conf的bind参数改为宿主机IP 192.168.3.205 报错,是因为该IP属于Windows宿主机,容器内部的网络栈不存在这个IP,Redis无法绑定一个不存在的本地IP,因此抛出地址无法分配的错误。

修复方案

第一步:修改docker-compose.yml配置

删除所有服务下的 network_mode: "host" 配置,为每个节点添加端口映射,除了Redis服务端口,还需要映射Redis集群总线端口(规则为服务端口+10000),示例(以6383节点为例):

redis4:
    container_name: node-4
    image: mnadeem/redis 
    ports:
      - 6383:6383
      - 16383:16383
    volumes:
    - C:\docker\redis\6383\redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    build:
      context: .
      dockerfile: Dockerfile
    hostname: node-4
    restart: always

注意:建议将Redis配置文件从C:\Windows\System32目录移出,该目录权限限制严格,容易出现配置文件加载失败的问题,可改为C:\docker\redis这类自定义目录。

第二步:修改每个节点的redis.conf配置

保持bind 0.0.0.0不变,新增集群宣告参数,告诉外部客户端访问集群时使用的宿主机IP和端口,以6383节点为例:

port 6383
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf 
cluster-node-timeout 5000
appendonly yes
# 新增以下3行配置
cluster-announce-ip 192.168.3.205
cluster-announce-port 6383
cluster-announce-bus-port 16383

其余节点对应修改端口号即可。

第三步:重建Redis集群

删除之前的集群节点数据,重新启动所有容器后,使用宿主机IP+端口创建集群:

redis-cli --cluster create 192.168.3.205:6379 192.168.3.205:6380 192.168.3.205:6381 192.168.3.205:6382 192.168.3.205:6383 192.168.3.205:6384 --cluster-replicas 1

验证

启动完成后在Windows宿主机执行netstat -ano,确认对应端口已被Docker进程监听,再用telnet测试端口连通性,之后即可用外部客户端正常连接Redis集群。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:04