连接到在主机上运行在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网络问题。我从来没有遇到码头工问题。我很疑惑
问题是与你绑定,你应该设置如下:
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'
谢谢你的帮助,没有让我在那里。当我尝试从主机连接时,似乎Redis似乎并不喜欢它,但我创建了第二个Docker镜像,并获得了Redis Docker镜像的IP地址,并且我能够连接。从第二个docker镜像中,我可以像这样连接到redis服务器:redis-cli -h 172.17.0.2 – user3888307
如果可以从另一个容器连接,则应该能够连接到它。只要确保你的自定义配置中有'bind 0.0.0.0',并且在创建容器时暴露6378'。从docker hos你可以通过运行'sudo redis-cli'连接。如果一切都失败了,请一步一步告诉我你在做什么,这样我就可以重现这个问题。 –
感谢Farhad的帮助。它似乎是docker hub上的redis映像的一部分,我在Ubuntu服务器上安装了redis,并且按照我的预期工作。我只是用它从我的本地主机上启动redis – user3888307
你是如何连接到redis容器?您是否尝试访问redis容器中的bash或尝试使用6379端口连接到redis容器? –