docker for windows搭建基于docker 的redis分布式集群

首先在docker中下载使用

shell 复制代码
docker pull redis:3.0.7
docker pull ruby

分别下载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文件的内容如下:

xml 复制代码
FROM redis:5.0.3
EXPOSE 6379
ADD redis.conf /redis.conf
ENTRYPOINT [ "redis-server", "/redis.conf" ]

然后当前目录就有两个文件了 使用命令行窗口进入到这个文件夹目录,执行docker build的指令

shell 复制代码
docker build -t "your image name" .

注意最后那个点,代表的是当前文件夹

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

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

shell 复制代码
docker network create --subnet=172.10.0.0/16  redis1 

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

shell 复制代码
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

分别执行上面六条语句。开启六个redis节点。

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

xml 复制代码
FROM ruby

ADD redis-trib.rb /redis-trib.rb

保存之后,命令行窗口来到当前文件夹,执行

shell 复制代码
docker build -t "your image name" .

然后,查看当前的镜像,

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

shell 复制代码
docker run --net=redis1 --ip 172.10.0.100 --name ruby11 -i -d ruby-redis

这样就打开了ruby容器,docker exec -it ruby11(这里为你的容器的名字) /bin/bash 进入创建的容器。然后执行

shell 复制代码
gem install redis --version 3.0.7

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

shell 复制代码
./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

就可以了,可以看到所有的节点都打开了。 然后可以进行测试 分别打开六个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。

相关推荐
无限进步_3 分钟前
C++ 继承机制完全解析:从基础原理到菱形继承问题
java·开发语言·数据结构·c++·vscode·后端·算法
武子康7 分钟前
大数据-278 Spark MLib-GBDT梯度提升决策树详解:从原理到实战案例
大数据·后端·spark
SamDeepThinking16 分钟前
适合中小型企业的出口入口网关微服务
java·后端·架构
笨蛋不要掉眼泪1 小时前
面试篇-java基础上
java·后端·面试·职场和发展
lwx572801 小时前
MySQL 性能调优完全指南:从硬件到 SQL,一篇吃透
后端
威迪斯特1 小时前
GoFr框架:加速微服务开发的Go语言利器
开发语言·后端·微服务·架构·golang·命令行框架·gofr框架
M--Y1 小时前
Redis集群和典型应用场景
redis·算法·哈希算法·集群
Magic@1 小时前
Redis学习[1] ——基本概念和数据类型
linux·开发语言·数据库·c++·redis·学习
zhenxin01222 小时前
GitSubmodule避坑指南:从入门到精通
spring boot·后端·spring
_Evan_Yao2 小时前
缓存金字塔上的红色闪电:Redis 如何借力 CPU 的 L1/L2/L3 与 TLB 飞驰
java·数据库·redis·后端·缓存