本人电脑为mac,直接下载docker dmg文件redis
docker search redis docker pull redis:latest docker images
mkdir onlineinternship/redis cd redis
redis配置文件docker
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 protected-mode no #默认yes,开启保护模式,限制为本地访问 daemonize no#默认no,改成yes意为以守护进程方式启动,可后台运行,除非kill进程,改成yes会使配置文件方式启动redis失败 databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。 dir ./ #输入本地redis数据库存放文件夹(可选) appendonly yes #redis持久化(可选) logfile "access.log" requirepass 123456(设置成你本身的密码)
protected-mode 是在没有显示定义 bind 地址(即监听全网断),又没有设置密码 requirepass
时,protected-mode 只容许本地回环 127.0.0.1 访问。
也就是说当开启了 protected-mode 时,若是你既没有显示的定义了 bind 监听的地址,同时又没有设置 auth 密码。那你只能经过 127.0.0.1 来访问 redis 服务。shell
docker run \ -p 6379:6379 --name myredis \ -v/Users/bochenghu/onlineinternship/redis/redis.conf:/etc/redis/redis.conf \ -v /Users/bochenghu/onlineinternship/redis/data:/data:rw \ --privileged=true -d redis redis-server /etc/redis/redis.conf \ --appendonly yes
参数解释说明:数据库
--appendonly yes 开启redis 持久化安全
# 查看活跃的容器 docker ps # 若是没有 myredis 说明启动失败 查看错误日志 docker logs myredis # 查看 myredis 的 ip 挂载 端口映射等信息 docker inspect myredis # 查看 myredis 的端口映射 docker port myredis
# redis-cli 访问 docker run -it --link myredis:redis --rm redis redis-cli -h redis -p 6379 # -it 交互的虚拟终端 # --rm 退出是删除此容器
或者使用 shell 登陆容器内操做bash
docker exec -it myredis bash redis-cli
配置完成app
新建一个redis-slave容器(同新建redis)ui
docker run -p 6380:6380 --name redis-slave -v /Users/bochenghu/onlineinternship/redisSlave/redis.conf:/etc/redis/redis.conf -v /Users/bochenghu/onlineinternship/redisSlave/data:/data:rw --privileged=true -d redis redis-server /etc/redis/redis.conf --appendonly yes
查看redis master的内部IPspa
修改 redis-slave 的配置文件 # 主地址 replicaof 172.17.0.2 6379 # 主认证 masterauth hubocheng
重启redis-slaverest
docker restart redis-slave
登陆 redis master 使用 info 命令查看从的状态
若是配置不成功记得检查 redis master 的 bind 和 protected-mode 的设置,看下有没有监听内网地址,不然 redis-slave 没办法经过 redis master 的地址作数据同步登录redis master后使用info,显示主从关联成功