1. 获取镜像
# 查看可用的稳定版本sudo docker search redissudo docker pull redis:5.0.8sudo docker image ls |grep redis
2. Redis单机
1. 启动容器
sudo docker run -d --name redis6379 -p 6379:6379 redis:5.0.8 --requirepass "yeech"# 持久化Redismkdir -p /tmp/redisdatasudo docker run -d --name redis6379 -p 6379:6379 -v /tmp/redisdata:/data redis:5.0.8 --requirepass "yeech" --appendonly yes# 停止容器sudo docker stop redis6379# 删除容器sudo docker rm redis6379# 查看容器状态sudo docker ps -a# 设置开机自启sudo docker update --restart=always redis6379
2. 验证
# 进入终端sudo docker exec -it redis6379 redis-cli -h 127.0.0.1 -p 6379 -a yeechredis>> keys *redis>> set a 124redis>> get a# 容器日志查看sudo docker logs redis6379sudo docker logs -f -t --tail=50 redis6379
3. Redis Cluster
1. 创建集群配置
sudo mkdir -p /usr/local/redis-clustercd /usr/local/redis-clustervi redis-cluster.tmpl
配置如下:
port ${PORT}protected-mode nocluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000cluster-announce-ip 192.168.0.99cluster-announce-port ${PORT}cluster-announce-bus-port 1${PORT}appendonly yesmasterauth yeechrequirepass yeech
- 参数说明
- masterauth:主要是针对master对应的slave节点设置的,在slave节点数据同步的时候用到。
- requirepass:对登录权限做限制,redis每个节点的requirepass可以是独立、不同的。
2. 生成节点目录
共生成6个文件夹,从6001到6006,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件。cd /usr/local/redis-clusterfor port in `seq 6001 6006`; do \mkdir -p ./${port}/conf \&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \&& mkdir -p ./${port}/data; \done
3. 创建容器
# 清理data,防止下次创建报错“[ERR] Node xxx.xxx.xxx.xxx:pppp is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.”rm -rf /usr/local/redis-cluster/600*/data/*# 启动容器for port in `seq 6001 6006`; do \docker run -d -ti \-v /usr/local/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \-v /usr/local/redis-cluster/${port}/data:/data \--restart always --name redis-${port} --net host \--sysctl net.core.somaxconn=1024 redis:5.0.8 redis-server /usr/local/etc/redis/redis.conf; \done# 查看容器状态docker ps# 停止容器docker stop redis-6001# 删除容器docker rm redis-6001
4. 创建Redis集群
1. 进入Redis客户端
# 随便进入一个已运行的容器docker exec -it redis-6001 bash
2. 创建Redis集群
/usr/local/bin/redis-cli -a yeech --cluster create \192.168.0.99:6001 \192.168.0.99:6002 \192.168.0.99:6003 \192.168.0.99:6004 \192.168.0.99:6005 \192.168.0.99:6006 \--cluster-replicas 1
5. 验证
# 进入终端sudo docker exec -it redis-6001 redis-cli -a yeech -h 127.0.0.1 -p 6001 -credis>> cluster inforedis>> cluster nodesredis>> keys *redis>> set a 124redis>> get a# 容器日志查看sudo docker logs redis-6001sudo docker logs -f -t --tail=50 redis-6001
6. 停止容器
for port in `seq 6001 6006`; do \docker stop redis-${port}; \done
7. 启动容器
for port in `seq 6001 6006`; do \docker start redis-${port}; \done
8. 删除容器
for port in `seq 6001 6006`; do \docker stop redis-${port}; \docker rm redis-${port}; \done
参考
CSDN:极简Docker环境Redis-5安装redis-cluster集群(不需要Ruby)
https://blog.csdn.net/adolph586/article/details/85340764
