【问题标题】:Can't connect from host to Redis running inside Docker container on custom port无法从主机连接到在自定义端口上运行在 Docker 容器内的 Redis
【发布时间】:2020-02-15 20:51:21
【问题描述】:

我正在尝试从主机 (macOS) 连接到在 Docker 容器内运行的 Redis。

由于我在本地有一个通过自制软件运行的 Redis 实例,因此我尝试将 Docker 容器的 Redis 映射到端口 6380 而不是 6379。(我可以这样做吗?)

➜ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                              NAMES
96c36ee47c62        redis:5.0.6-alpine   "docker-entrypoint.s…"   41 seconds ago      Up 39 seconds       6379/tcp, 0.0.0.0:6379->6380/tcp   redis

当我停止本地运行的 Redis 版本并将容器端口映射到 6379 时,我可以通过 redis-cli 连接到容器。但是使用自定义 6380 端口时,我会收到一个错误:

➜ redis-cli -p 6380
`Could not connect to Redis at 127.0.0.1:6380: Connection refused not connected>` error.

我已经使用以下命令启动了容器

➜ docker run --name redis -d -p 6379:6380 --network mynetwork redis:5.0.6-alpine

我无法在其他端口上连接的原因是什么?谢谢。

【问题讨论】:

  • Docker 私有 IP 地址在多种情况下都不起作用;例如,如果您在 MacOS 或 Windows 主机上,则这些地址不起作用。我会使用其他一种与它们通信的方式——容器名称作为容器之间的主机名,从主机发布的端口。
  • @DavidMaze 感谢您提供的信息。发布问题后,我意识到在默认端口上运行了一个本地 Redis 版本。因为我之前实际上尝试过使用不同的端口,所以我已经更新了问题以更清楚地说明这一点。

标签: docker redis


【解决方案1】:

我刚刚意识到我混淆了“内部”和“外部”端口。而不是

-p 6379:6380 应该是:

-p 6380:6379.

现在它可以按预期工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 2021-09-22
    • 2019-08-05
    • 1970-01-01
    • 2021-11-28
    • 2020-02-08
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多