连接到在主机上运行在Docker容器中的Redis

问题描述:

我看到很多人为此苦苦挣扎,有点像在redis容器映像中可能存在缺陷,而其他人似乎在追逐类似的问题。连接到在主机上运行在Docker容器中的Redis

我在DockerHub上使用标准的redis映像。 (https://github.com/dockerfile/redis

运行这样的:

docker run -it -p 6379:6379 redis bash 

一旦我在我可以启动服务器,并做从容器中图像的Redis平。

不幸的是,我无法从我的主机连接到redis容器。

我尝试过设置,例如下面。

bind 127.0.0.1 

并取消绑定从配置

,并试图关闭保护模式

protected-mode no 

我知道它读取配置文件,因为我改变港口只是为了测试,和我能够做到这一点。

我正在运行Windows 10,所以也许这是一个Windows网络问题。我从来没有遇到码头工问题。我很疑惑

+0

你是如何连接到redis容器?您是否尝试访问redis容器中的bash或尝试使用6379端口连接到redis容器? –

问题是与你绑定,你应该设置如下:

bind 0.0.0.0 

这将设置redis绑定到所有可用的接口,在集装箱环境一个接口,(eth0)和回环(lo)redis将绑定到上述两者。您应该考虑通过config file中的其他指令或使用外部工具(如firewalls)来添加安全措施。因为使用这种方法,每个人都可以连接到您的redis服务器。

默认设置为bind 127.0.0.1,此设置将导致redis仅在回送接口上进行侦听,并且只能从容器内进行访问。 (安全)

要运行的自定义配置文件的Redis:

sudo docker run -d --name redis-test -p 6379:6379 -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf 

我们验证搬运工主机上redis-tools安装:

sudo redis-cli       
127.0.0.1:6379> 
127.0.0.1:6379> set farhad likes:stackoverflow 
OK 
127.0.0.1:6379> get farhad 
"likes:stackoverflow" 
127.0.0.1:6379> 

您也可以从connnect您redis容器外部主机通过:

redis-cli -h 'IP-address-of-dockerhost-running-redis-container' 
+0

谢谢你的帮助,没有让我在那里。当我尝试从主机连接时,似乎Redis似乎并不喜欢它,但我创建了第二个Docker镜像,并获得了Redis Docker镜像的IP地址,并且我能够连接。从第二个docker镜像中,我可以像这样连接到redis服务器:redis-cli -h 172.17.0.2 – user3888307

+0

如果可以从另一个容器连接,则应该能够连接到它。只要确保你的自定义配置中有'bind 0.0.0.0',并且在创建容器时暴露6378'。从docker hos你可以通过运行'sudo redis-cli'连接。如果一切都失败了,请一步一步告诉我你在做什么,这样我就可以重现这个问题。 –

+0

感谢Farhad的帮助。它似乎是docker hub上的redis映像的一部分,我在Ubuntu服务器上安装了redis,并且按照我的预期工作。我只是用它从我的本地主机上启动redis – user3888307