如何从 Docker 容器连接到本地 Redis 服务器?
Posted
技术标签:
【中文标题】如何从 Docker 容器连接到本地 Redis 服务器?【英文标题】:How to connect to a local Redis server from a Docker container? 【发布时间】:2018-05-02 18:02:15 【问题描述】:我正在尝试从 Docker 容器内部连接到我机器上的本地 Redis 服务器。到目前为止我做了什么:
Redis 正在我的机器上运行(可以通过 redis-cli 连接到它) 启动了一个交互式 Docker 容器(来自 Ubuntu 映像) 在容器内安装了“redis-tool” 尝试通过 redis-cli 连接到 Redis: >redis-cli -h 172.17.0.3 -p 6379
(通过容器内的ifconfig
获取IP地址)
收到错误提示“连接被拒绝”
为了获得有效的连接,我没有想到什么技巧?
我已经尝试在我的redis.conf
中设置“绑定 0.0.0.0”,但这没有任何效果。我也尝试在运行容器时将端口 6379 转发到 6379,但我收到错误消息,指出该地址已在使用中。
提前致谢!
【问题讨论】:
【参考方案1】:您不应该连接到容器的 IP 地址,而是主机的 IP(您在主机上看到的 Docker 桥接器的 IP)。看你的问题应该是172.17.0.1
【讨论】:
非常感谢!【参考方案2】:你可以这样做:
获取主机的 IP,例如在环境变量中$host_ip
运行 docker 命令,例如:docker run -it --add-host redis_server:$host_ip ubuntu bash
现在,您可以从容器内部通过主机名redis_server
访问 Redis 服务器,该主机名在您的主机上运行。
【讨论】:
【参考方案3】:只要使用这个命令
"docker run --network=host -p port:port IMAGE"
不仅是 Redis,您在 localhost 上运行的所有服务都可以在 docker 上使用。
【讨论】:
【参考方案4】:在容器之间使用链接。docker run -d --name=redis_xyz redis
docker run -it --link redis_xyz:redis_local redis_cli_image redis-cli -h redis_local
【讨论】:
感谢您的评论,但我不想在容器内运行 redis! 对不起。所以尝试在 redis-cli 容器中:redis-cli -h 0.0.0.0 或 redis-cli -h HostIP。 172.17.0.3 是容器 IP。使用 -h HostIP 或 -h 0.0.0.0以上是关于如何从 Docker 容器连接到本地 Redis 服务器?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Docker 容器中的 python 脚本连接到 Ubuntu 上的本地 SQL 服务器
无法从 docker 容器内的 Spring Boot 连接到 Redis
如何将我的 Spring Boot 应用程序连接到 Docker 上的 Redis 容器?