当前位置: 首页 > 面试题库 >

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

郭瀚海
2023-03-14
问题内容

我看到很多人都在为此苦苦挣扎,好像在redis容器映像中可能有一个错误,而其他人似乎在追寻类似的问题。

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

像这样运行它:

docker run -it -p 6379:6379 redis bash

进入服务器后,就可以启动服务器,并从容器映像进行Redis ping了。

不幸的是,我无法从主机连接到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已安装的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或mysql管理的了解有限,这可能是一个愚蠢的问题,但由于我花了整整一个晚上讨论这个问题,所以我敢问这个问题。) 概括地说 我想在docker容器中运行mysql,并从我的主机连接到它。到目前为止,我取得的最好成绩是: 更多详细信息 我正在使用以下: 在有此文件的目录中,我可以成功地构建映像并运行它: 当我连接到图像上时,它似乎工作得很好: 然而,我并没有从主持人那里获得那么

  • 问题内容: 所以我想连接到我在主机上运行的mongodb(DO Drop,Ubuntu 16.04)。它在localhost 的默认端口上运行。 然后,我使用mup将我的Meteor应用程序部署在我的DO Drop上,该DO Drop使用docker在容器内运行Meteor应用程序。到目前为止,一切都很好。使用标准连接URL将应用程序连接到mongodb。现在我有以下问题: 显然不能在docker

  • 问题内容: 我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观: 这很好。 我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例? 澄清: 我有一台装有Docker的Macbook 我有一个带有mysql的docker容器 我想从Macbook的终端连接到上述容器上运行的mysql实例 我不想使用命

  • 厘斯7.8 docker run -d -p 8080:80 --name nginxtest nginx docker ps CONTAINER ID Image PORTS NAMES xxxxxxxx nginx 0.0.0.0:8080- curl localhost:8080 < br > curl:(56)Recv失败:连接被对等方重置 netstat-tulpn<br>tcp6 0

  • 问题内容: Docker容器可以通过哪个IP地址连接到Windows版Docker(在Windows 10上)上的主机?您如何找到此IP地址? 例如:您有一个服务在Windows 10计算机上的端口1234上运行。容器中的程序必须访问此服务。程序应使用哪个IP地址连接到主机? 问题答案: 简短的回答 :在大多数情况下,您需要 10.0.75.1 。 在适用于Windows的Docker中,容器通过

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839