一、单节点redis
1)拉取镜像
docker pull redis:5
2.1)方法一:直接创建容器
docker run \
-p 6379:6379 \
--restart=always \
--name some-redis \
-v /mnt/redis/data:/data \
--network=my-network \
--network-alias=redis-alias \
-e TZ=Asia/Shanghai \
-d redis:tag redis-server --appendonly yes --requirepass "my-secret-pw"
- some-redis:创建后的容器名称(此处我修改为 redis)
- data:挂载数据路径
- network:非必须,要加入的网络
- network-alias:被必须,在网络中的别名
- TZ:时区
- tag:指定 redis 版本(此处我修改为5)
- requirepass:登陆密码
2.2)方法二:自定义配置
创建映射文件夹并把自定义的 redis.conf 复制进去
mkdir -p /myredis/conf/
redis.conf 主要修改这几点
- bind 0.0.0.0
- protected-mode no
- daemonize no
- requirepass 你的密码
然后创建容器
docker run -d -p 6379:6379 -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name redis --restart=always redis:5 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
3)测试连接
二、redis单机集群
1. 创建redis-cluster.yaml文件,注意修改ip
name: redis-cluster
services:
redis-node-0:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-0:/bitnami/redis/data
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_PORT_NUMBER=7000
- REDIS_CLUSTER_ANNOUNCE_PORT=7000
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8 #主机IP或公网IP,不要使用127.0.0.1或localhost,下面节点也记得换
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17000
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
ports:
- 7000:7000
- 17000:17000
redis-node-1:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-1:/bitnami/redis/data
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_PORT_NUMBER=7001
- REDIS_CLUSTER_ANNOUNCE_PORT=7001
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17001
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
ports:
- 7001:7001
- 17001:17001
redis-node-2:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-2:/bitnami/redis/data
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_PORT_NUMBER=7002
- REDIS_CLUSTER_ANNOUNCE_PORT=7002
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17002
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
ports:
- 7002:7002
- 17002:17002
redis-node-3:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-3:/bitnami/redis/data
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_PORT_NUMBER=7003
- REDIS_CLUSTER_ANNOUNCE_PORT=7003
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17003
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
ports:
- 7003:7003
- 17003:17003
redis-node-4:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-4:/bitnami/redis/data
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_PORT_NUMBER=7004
- REDIS_CLUSTER_ANNOUNCE_PORT=7004
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17004
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
ports:
- 7004:7004
- 17004:17004
redis-node-5:
image: docker.io/bitnami/redis-cluster:7.0
volumes:
- redis-cluster_data-5:/bitnami/redis/data
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_CLUSTER_REPLICAS=1
- REDIS_PORT_NUMBER=7005
- REDIS_CLUSTER_ANNOUNCE_PORT=7005
- REDIS_CLUSTER_ANNOUNCE_BUS_PORT=17005
- REDIS_CLUSTER_ANNOUNCE_IP=192.168.3.8
- REDIS_CLUSTER_DYNAMIC_IPS=no
- REDIS_NODES=redis-node-0:7000 redis-node-1:7001 redis-node-2:7002 redis-node-3:7003 redis-node-4:7004 redis-node-5:7005
- REDIS_CLUSTER_CREATOR=yes
ports:
- 7005:7005
- 17005:17005
volumes:
redis-cluster_data-0:
redis-cluster_data-1:
redis-cluster_data-2:
redis-cluster_data-3:
redis-cluster_data-4:
redis-cluster_data-5:
2. 启动集群
docker compose -f redis-cluster.yaml up -d
3. 需要删除集群的话,使用下面的命令
docker compose -f redis-cluster.yaml down && docker volume prune -f