如何从 Docker 容器连接到本地 Redis 服务器?

问题描述 投票:0回答:4

我尝试从 Docker 容器内部连接到本地 Redis 服务器,但未成功。这是我到目前为止所做的设置:

  • 我已在我的主机上运行 Redis。我可以通过

    redis-cli
    连接到它。

  • 我从 Ubuntu 映像启动了一个交互式 Docker 容器。

  • 我已在 Docker 容器内安装了

    redis-tools

  • 我尝试通过

    redis-cli
    连接到Redis:

    redis-cli -h 172.17.0.3 -p 6379
    

    172.17.0.3
    是我通过Docker容器内的
    ifconfig
    获得的IP地址。

  • 我将

    bind 0.0.0.0
    附加到本地 Redis 的
    redis.conf

完成所有设置后,我尝试运行 Docker 容器。但是,我收到一条错误消息,指出“连接被拒绝”。

然后,我在运行 Docker 容器时尝试将端口

6379
转发到
6379
,但收到了不同的错误,指出该地址已在使用中。

为了获得有效的连接,我没有想到什么技巧?预先感谢!

docker redis
4个回答
11
投票

您不应该连接到容器的 IP 地址,而应该连接到主机的 IP 地址(您在 Docker 桥接器的主机上看到的 IP 地址)。看你的问题应该是

172.17.0.1


3
投票

你可以这样做:

  • 获取您主机的 IP,例如在 环境变量
    $host_ip
  • 运行 docker 命令,例如:
    docker run -it --add-host redis_server:$host_ip ubuntu bash
    

现在,从容器内部,您将能够通过在主机上运行的主机名

redis_server
访问 Redis 服务器。


2
投票

只需使用这个命令

“docker run --network=host -p port:port IMAGE”

不仅是 Redis,您在 docker 上需要的本地主机上运行的所有服务都可以与此一起使用。


-1
投票

在容器之间使用link

docker run -d --name=redis_xyz redis

docker run -it --link redis_xyz:redis_local redis_cli_image redis-cli -h redis_local

© www.soinside.com 2019 - 2024. All rights reserved.