Docker 部署容器项目时无法连接 Redis(127.0.0.1 连接失败)解决方案

当你把 WordPress / DuJiaoka / One-API 等服务跑在 Docker 里后,很多项目默认会用 127.0.0.1:6379 去连 Redis,然后你会发现——怎么都连不上

核心原因很简单:

这一点来自 Docker 的网络隔离机制:容器有独立 network namespace,拥有自己的 loopback(127.0.0.1)。可参考 Docker 文档对容器网络的描述(Container networking)。出处:Docker Docs(https://docs.docker.com/network/)。


前提


第一步:修改 Redis 配置,允许被容器访问

Redis 默认可能只绑定 127.0.0.1(仅本机可访问),容器自然访问不到。

编辑配置文件(常见路径):

sudo nano /etc/redis/redis.conf

找到并修改/确认这些配置(不同发行版略有差异,以你机器上的配置为准):

  1. 放开 bind(允许其它地址访问)
# bind 127.0.0.1 ::1
  1. 关闭保护模式(按需,确保你已设置强密码并在内网/防火墙可控范围内使用)
protected-mode no
  1. 设置 Redis 访问密码
requirepass yourpassword

然后重启 Redis:

sudo systemctl restart redis-server

bind / protected-mode / requirepass 均为 Redis 官方配置项。出处:Redis 文档(https://redis.io/docs/latest/operate/oss_and_stack/management/config/)。


第二步:获取宿主机内网 IP(用于容器连接)

安装网络工具(如果你还没装):

sudo apt install net-tools

查看网卡信息:

ifconfig

通常你会在 eth0(或 ens*)下面看到类似:

把这个内网 IP记下来。


第三步:在容器项目里把 Redis 地址从 127.0.0.1 改成宿主机内网 IP

把应用配置里的 Redis 地址从:

改为:

并填上你在 redis.conf 里设置的密码 yourpassword


总结(把问题一针见血说清楚)


小建议(更稳的做法)

如果你希望更规范: