gpt4 book ai didi

docker - 从主机连接到在 Docker 容器中运行的 Redis

转载 作者:IT老高 更新时间:2023-10-28 12:38:30 25 4
gpt4 key购买 nike

我看到很多人都在为此苦苦挣扎,感觉可能是 redis 容器镜像中存在错误,而其他人似乎也在追求类似的问题。

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

像这样运行它:

docker run -it -p 6379:6379 redis bash

进入后,我可以启动服务器,并从容器镜像执行 redis ping。

很遗憾,我无法从我的主机连接到 redis 容器。

我已经尝试过设置,如下所示。

bind 127.0.0.1

并从配置中移除绑定(bind)

并尝试关闭保护模式

protected-mode no

我知道它正在读取配置文件,因为我更改端口只是为了测试,并且我能够做到。

我运行的是 Windows 10,所以可能是 Windows 网络问题。我通常从来没有遇到过docker问题。我很困惑

最佳答案

问题在于您的绑定(bind),您应该设置以下内容:

bind 0.0.0.0

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

默认设置是bind 127.0.0.1,这个设置会导致redis只监听loopback接口(interface),并且只能从容器内部访问。 (为了安全)

使用自定义配置文件运行 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 的 docker 主机上进行验证:

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>

您还可以通过以下方式从外部主机连接到您的 redis 容器:

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

关于docker - 从主机连接到在 Docker 容器中运行的 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com