https://blog.csdn.net/xielinrui123/article/details/85104446

首先在docker中下载使用

docker pull redis:3.0.7
docker pull ruby
1
2
分别下载redis的3.0.7版本和ruby。之所以用3.0.7版本的redis是因为ruby的redis插件没有最新版本的,如果安装最新版本的redis会导致redis.x.x.x.gem和redis版本不一致而产生问题。所以将就选择3.0.7吧。你可以去gem的官网上面看看最新版的gem对应的redis是多少版本了,然后再下载最新的即可,我这里就用3.0.7版本。gem是ruby的包管理软件,就跟php的Composer,linux的yum一样。
然后,在本地电脑上面也下载和docker中相同版本的redis,取出redis.conf文件,在你的工作路径上面创建一个文件夹,随便命名就可以了,然后在里面放入复制的redis.conf。为了使redis支持分布式,打开cluster配置。

保存后,在当前文件夹中创建Dockerfile文件,简单的说,Dockerfile文件就是在容器外面定义了将要在容器里面执行的操作。这些操作实际上也可以自己在容器中进行创建。Dockerfile文件的内容如下:

FROM redis:5.0.3
EXPOSE 6379
ADD redis.conf /redis.conf
ENTRYPOINT [ "redis-server", "/redis.conf" ]
1
2
3
4
然后当前目录就有两个文件了

使用命令行窗口进入到这个文件夹目录,执行docker build的指令

docker build -t "your image name" .
1
注意最后那个点,代表的是当前文件夹

创建好之后,用docker images 查看当前的镜像

可以发现镜像创建好了。为了使得不同的集群端口相互之间不冲突,自己创建一个network。

docker network create --subnet=172.10.0.0/16 redis1
1
创建了一个名为redis1的network。ip地址是虚拟的,可以随便写。只要是本地地址就可以了。
然后运行三个主节点和三个从节点

docker run -d --net redis1 --ip 172.10.0.91 -p 8001:6379 --name redis-test1 redis-cluster
docker run -d --net redis1 --ip 172.10.0.92 -p 8002:6379 --name redis-test2 redis-cluster
docker run -d --net redis1 --ip 172.10.0.93 -p 8003:6379 --name redis-test3 redis-cluster
docker run -d --net redis1 --ip 172.10.0.94 -p 8004:6379 --name redis-test4 redis-cluster
docker run -d --net redis1 --ip 172.10.0.95 -p 8005:6379 --name redis-test5 redis-cluster
docker run -d --net redis1 --ip 172.10.0.96 -p 8006:6379 --name redis-test6 redis-cluster
1
2
3
4
5
6
分别执行上面六条语句。开启六个redis节点。

然后在你的工作目录上再创建一个空文件夹,里面放入 redis-trib.rb ,这个文件在redis.x.x.x /src下面的,我今天就是在这个文件夹里面找这个文件没找到,花了俩小时才发现了它,藏得太好了,手动滑稽。然后在redis-trib.rb同目录下创建一个Dockerfile,用来构建ruby镜像,里面填入

FROM ruby

ADD redis-trib.rb /redis-trib.rb
1
2
3
保存之后,命令行窗口来到当前文件夹,执行

docker build -t "your image name" .
1
然后,查看当前的镜像,

ruby-redis创建好了,然后,在跟刚才运行的redis节点相同的network环境下执行:

docker run --net=redis1 --ip 172.10.0.100 --name ruby11 -i -d ruby-redis
1
这样就打开了ruby容器,docker exec -it ruby11(这里为你的容器的名字) /bin/bash 进入创建的容器。然后执行

gem install redis --version 3.0.7
1
用 --version 来指定特定版本的redis插件,然后执行

./redis-trib.rb create --replicas 1 172.10.0.91:6379 172.10.0.92:6379 172.10.0.93:6379 172.10.0.94:6379 172.10.0.95:6379 172.10.0.96:6379
1

就可以了,可以看到所有的节点都打开了。
然后可以进行测试
分别打开六个cmd,然后进入到六个节点中

用redis-cli -c进入redis。然后在其中一个节点set一个值,在其他节点查看结果。如图:

在其他节点查看:

打开windows上面的客户端:

注意:

host既可以填写127.0.0.1也可以写Docker的ip:10.0.75.1。

注意,在windows for docker 上面,如果重启了操作系统,需要重启docker Desktop,否则docker与本机的socket会失效。导致本机无法连接到docker上。

如果想要每次重启docker 之后不需要手动重新打开各个容器,就在容器run 的时候加上 --restart=always。
————————————————
版权声明:本文为CSDN博主「炒鸡辣鸡的私房菜」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xielinrui123/article/details/85104446

搭建基于docker 的redis分布式集群在docker for windows的更多相关文章

  1. 喵星之旅-狂奔的兔子-基于docker的redis分布式集群

    一.docker安装(略) 二.下载redis安装包(redis-4.0.8.tar.gz) 以任何方式获取都可以.自行官网下载. 三.拉取centos7的docker镜像 命令:docker pul ...

  2. 基于hadoop2.6.0搭建5个节点的分布式集群

    1.前言 我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群 2.规划 1.主 ...

  3. Redis分布式集群几点说道

    原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html  Redis分布式集群几点说道 Redis数据量日益 ...

  4. 10.Redis分布式集群

    10.Redis分布式集群10.1 数据分布10.1.1 数据分布理论10.1.2 Redis数据分区10.1.3 集群功能限制10.2 搭建集群10.2.1 准备节点10.2.2 节点握手10.2. ...

  5. java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱

    java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱 redis数据库 Redis企业集群高级应用精品教程[图灵学院] Redis权威指南 利用redis + lua解决抢红包高并 ...

  6. 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群

    from https://my.oschina.net/ososchina/blog/856678     摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...

  7. 5000+字硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...

  8. 搭建hbase1.2.5完全分布式集群

    简介 有一段时间,没写博客了,因为公司开发分布式调用链追踪系统,用到hbase,在这里记录一下搭建过程 1.集群如下: ip 主机名 角色 192.168.6.130 node1.jacky.com ...

  9. 暑假第二弹:基于docker的hadoop分布式集群系统的搭建和测试

    早在四月份的时候,就已经开了这篇文章.当时是参加数据挖掘的比赛,在计科院大佬的建议下用TensorFlow搞深度学习,而且要在自己的hadoop分布式集群系统下搞. 当时可把我们牛逼坏了,在没有基础的 ...

随机推荐

  1. 命令式&函数式:把大象关进冰箱里问题

    面向过程:把大象关进冰箱里: 把冰箱门打开=> 大象放冰箱里=> 冰箱门关上 面向对象: 冰箱.开门() 冰箱.放入(大象) 冰箱.关门() 函数式: 关进(冰箱,大象): 关门(放入(开 ...

  2. continue语句:编程把100-300之间的能被25整除的数输出

    #include<stdio.h>void main(){ int n; for(n=100;n<=300;n++) { if(n%25!=0) continue; printf(& ...

  3. 【BZOJ1095】【ZJOI2007】捉迷藏

    前言 好恶心的一道题,代码写了2.5h,调试调了5h+,局部重构了n遍. 题意 一棵树上的节点有黑白两色,初始为黑,支持修改颜色,查询最远黑点对.$n<=10^5,m<=5*10^5$ 题 ...

  4. MongoDB db.stats()&&db.db.serverStatus()

    db.stats()   示例图 参数解释: "db" : "test" ,表示当前是针对"test"这个数据库的描述.想要查看其他数据库, ...

  5. H5实现横向滚动的方法总结

    小程序中有横向滚动的swiper,H5中目前得手动实现. 实现方法如下: 外层需要设置: overflow: scroll;white-space: nowrap; 内层需要设置: display: ...

  6. MYSQL索引的作用和创建

    索引是查询优化最主要的方式: 查询方式: 一种是:全表扫描: 一种是:利用数据表上建立的所以进行扫描. 如:对表中name字段建立索引:则按照表中name字段进行索引排序,并为其建立指向数据表中记录所 ...

  7. Quartus RTL Simulation

    今天在做某个module的RTL Simulation时,发现之前的do文件有问题,导致信号没有导入.将sim中的XXX_tb设置成了XXX所致.改正后无误. 可参考: https://www.cnb ...

  8. npm link 的用法

    npm link 的用法 先到对应的自定义包下执行 npm link 会读取对应的 packagejson 中的名称 然后到对应的目录下执行 npm link your/own/npm/name 就会 ...

  9. WAMP完整配置教程(启用php extensions、修改端口、允许外网访问、wamp绑定域名)。

    作为一名php爱好者,很希望自己的写的代码能够快速的在浏览器页面展现出来,wamp是一款集成很完善.很方便的软件,我刚开始研究的时候,会因为对于wamp的不熟悉,导致修改一点点配置就会在百度查好久,这 ...

  10. [NOIP2013]华容道 题解

    [NOIP2013]华容道 首先是一种比较显然的做法. 整个棋盘,除了起点,终点和空格,其他的方块是等价的. 对于终点,它始终不会变化,如果搜到终点结束搜索即可,所以我们不需要考虑终点. 所以需要考虑 ...