redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address

知道为什么我在尝试 运行 从一个容器到另一个容器的 redis 命令时收到连接错误吗? 我正在尝试在本地 运行 一个旧的 python 2.7 lambda,以便在升级到 3.8.10 之前进行测试 我正在 运行 构建一个脚本并将 redisdb 容器与 my_app 容器链接:

docker build . -t my_app:latest
docker pull redis:3.2.4-alpine && \
docker run --name=redisdb -d  redis:3.2.4-alpine redis-server
docker run \
    --rm -t -i -d \
    --link redisdb:redis \
    -h redis -p 6379 \
    -e CONFIG_FILE=local_config.yaml \
    my_app

我正在 运行使用以下命令在 my_app 上创建一个 python 脚本:

r = redis.Redis()
r.mset({"Bahamas": "Nassau"})
print(r.get("Bahamas"))

我也在这里尝试了最重要的建议: 并通过了 r = redis.Redis(host='localhost', port=6379, decode_responses=True),结果相同。

每次我尝试 运行 my_app 容器中的 python 脚本时,我得到:

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

当我 运行 容器然后检查 docker ps 我得到这个:

$ docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED              STATUS              PORTS                     NAMES
76aea9308821   mar-atlas-readings-processor   "python2"                About a minute ago   Up About a minute   0.0.0.0:64098->6379/tcp   mar-atlas-readings-processor
f313113341de   redis:3.2.4-alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                  redisdb

这显示了正确的端口连接。

您的 python 应用正在尝试与本地主机上的 Redis 通信,但 Redis 容器位于不同的本地主机上。

您应该能够使用 docker run ... 命令中配置的 link,即 redisdb,用于 host 选项。