1、拉取redis镜像文件
docker pull redis
查看镜像
docker images
2、在linux主机创建等会需要挂载的目录和文件
mkdir -p /mydata/redis/data
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
3、创建redis容器并进行端口映射、容器取名和目录文件挂载
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
:
前面是指linux主机,后面是redis容器
--name redis
是给容器取名字
最后一行的redis
是指镜像名
4、启动容器并进入客户端
docker exec -it 容器名或容器id bash
redis-cli
docker exec -it 容器名或容器id redis-cli
1、在linux主机上创建相应的目录用于挂载
mkdir -p /mydata/redis/cluster/node1/data #集群一
mkdir -p /mydata/redis/cluster/node2/data #集群二
mkdir -p /mydata/redis/cluster/node3/data #集群三
2、创建集群
创建集群一
docker create --name redis-node1 -v /mydata/redis/cluster/node1/data:/data \
-p 6380:6379 redis --cluster-enabled yes \
--cluster-config-file redis-node1.conf
启动集群一
docker start redis-node1
创建集群二
docker create --name redis-node2 -v /mydata/redis/cluster/node2/data:/data \
-p 6381:6379 redis --cluster-enabled yes \
--cluster-config-file redis-node2.conf
启动集群二
docker start redis-node2
创建集群三
docker create --name redis-node3 -v /mydata/redis/cluster/node3/data:/data \
-p 6382:6379 redis --cluster-enabled yes \
--cluster-config-file redis-node3.conf
启动集群三
docker start redis-node3
3、查看集群信息
注意三个集群的IP和端口信息
1、IP信息
三个Redis集群在Docker容器中被重新分配了IP信息
1)先看redis-node1
容器被分配的IP地址
docker inspect redis-node1
redis-node1: 172.17.0.6
2)再看redis-node2
容器被分配的IP地址
docker inspect redis-node2
redis-node2: 172.17.0.7
3)最后看redis-node3
容器被分配的IP地址
docker inspect redis-node3
redis-node3: 172.17.0.8
2、 端口信息
在做端口映射时,我们已经指明了端口情况
redis-node1
对外的端口是6380,但是在自己docker分配IP下的端口还是6379
redis-node2
对外的端口是6381,但是在自己docker分配IP下的端口还是6379
redis-node3
对外的端口是6382,但是在自己docker分配IP下的端口还是6379
4、集群搭建
执行组建集群命令(请根据自己的ip信息进行拼接)
redis-cli --cluster create 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379 --cluster-replicas 0
5、测试集群
启动redis,一定要以redis-cli -c
命令启动,-c
代表启动集群的意思
在集群一中set name zhangsan
在集群二和集群三中get name
可以看到集群搭建成功
这种集群有个问题,就是这些ip是在一个docker下的,所以只能在一台服务器才可以成功,另外还有一种集群搭建方式,可见https://blog.51cto.com/u_11827525/2854701
其实我本来想搭建主从关系的集群的,但是上面的方式没有成功,原因不详,找到另外一种方法
在进行之前我们需要将之前创建的容器给删了
docker stop redis-node1
docker rm redis-node1
docker stop redis-node2
docker rm redis-node2
docker stop redis-node3
docker rm redis-node3
算了,我不想试了,我直接在主机上搭建集群吧,我不在docker里面搭建了,这里有个链接,谁想试试自己来吧。
https://blog.51cto.com/u_11827525/2854652