2017-10-06 83 views
2

我想在docker中设置redis配置。在Dock中设置docker的redis配置

我有自己redis.conf下d:/redis/redis.conf并已经配置它有绑定127.0.0.1和具有未注释requirepass foobared

然后用这个命令中搬运工加载此配置:

docker run --volume D:/redis/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf 

接下来, 我有搬运工人,compose.yml在我在src /资源Maven项目应用。

我ahve在我的搬运工,compase.yml

redis: 
image: redis 
ports: 
    - "6379:6379" 

的follwoing而且我执行命令:

docker-compose up 

服务器运行,但是当我用命令查看:

docker ps -a 

它显示redis图像运行在0.0.0.0:6379。

我希望它运行在127.0.0.1。

我该怎么做? 不是我的配置文件加载或错误?或我的命令是错误的?

任何建议都很有帮助。

PS:我正在使用Windows。

感谢

回答

1

尝试执行:

docker inspect <container_id> 

并使用 “NetworkSettings已” - > “网关”(必须是172.17.0.1)值而不是127.0.0.1。

由于Redis在孤立环境中运行,因此无法使用127.0.0.1。

或者你可以链接你的容器。

+0

感谢你回复@Aleksandr是它显示172.17.0.1。我更改了redis.conf中的绑定来绑定172.17.0.1。但再次当我执行命令码头运行 - 卷D:/redis/redis.conf:/usr/local/etc/redis/redis.conf - 名称myredis redis redis-server/usr/local/etc/redis/redis的。conf并执行命令docker-compose up it显示相同的 – pgman

0

所以首先你不应该担心redis在0.0.0.0:6379上倾听。因为redis正在容器中运行。如果它不听0.0.0.0,那么你将无法建立任何连接。

接下来,如果你想的Redis只在本地主机上的本地主机听我的话,你需要使用下面

redis: 
image: redis 
ports: 
    - "127.0.0.1:6379:6379" 

PS:我还没有和127.0.0.1端口映射运行容器或码头的窗户,所以你必须要看看它是否有效。由于在Windows,Mac和Linux的主机网络是不同的,可能不会这样工作

+0

谢谢你的回复。我尝试了你所说的,但令人惊讶的是它说127.1.0.1:6379绑定失败:端口已被分配。不知道发生了什么 – pgman

+0

我只是注意到,每当我更改绑定或取消注释requirepass,然后我得到该连接被拒绝,incase我保持IP到127.0.0.1或网关,并给我的redis.yml密码为空那么它的工作。所以,我认为我的redis.conf没有正确加载,虽然它显示加载配置 – pgman

+0

假设您使用的是Docker for Windows,您的Docker虚拟机在Docker设置中共享了'D:'吗? –