创建存放 redis 容器的目录
# 创建存放 redis 容器的目录 mkdir /home/docker/redis/{conf,data} -p cd /home/docker/redis
获取 redis 的默认配置模版
# 获取 redis 的默认配置模版 # 这里主要是想设置下 redis 的 log / password / appendonly # redis 的 docker 运行参数提供了 --appendonly yes 但没 password wget https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf -O conf/redis.conf # 直接替换编辑 sed -i 's/logfile ""/logfile "access.log"' conf/redis.conf sed -i 's/# requirepass foobared/requirepass 123456' conf/redis.conf sed -i 's/appendonly no/appendonly yes' conf/redis.conf # 这里可能还需配置一些 bind protected-mode
protected-mode 是在没有显示定义 bind 地址(即监听全网断),又没有设置密码 requirepass
时,只允许本地回环 127.0.0.1 访问。 也就是说当开启了 protected-mode 时,如果你既没有显示的定义了 bind
监听的地址,同时又没有设置 auth 密码。那你只能通过 127.0.0.1 来访问 redis 服务。
创建并运行一个名为 myredis 的容器
# 创建并运行一个名为 myredis 的容器 docker run \ -p 6379:6379 \ -v $PWD/data:/data \ -v $PWD/conf/redis.conf:/etc/redis/redis.conf \ --privileged=true \ --name myredis \ -d redis redis-server /etc/redis/redis.conf # 命令分解 docker run \ -p 6379:6379 \ # 端口映射 宿主机:容器 -v $PWD/data:/data:rw \ # 映射数据目录 rw 为读写 -v $PWD/conf/redis.conf:/etc/redis/redis.conf:ro \ # 挂载配置文件 ro 为readonly --privileged=true \ # 给与一些权限 --name myredis \ # 给容器起个名字 -d redis redis-server /etc/redis/redis.conf # deamon 运行 服务使用指定的配置文件
查看活跃的容器
# 查看活跃的容器 docker ps # 如果没有 myredis 说明启动失败查看错误日志 docker logs myredis # 查看 myredis 的 ip 挂载 端口映射等信息 docker inspect myredis # 查看 myredis 的端口映射 docker port myredis
外部访问 redis 容器服务
# redis-cli 访问 docker run -it --link myredis:redis --rm redis redis-cli -h redis -p 6379 # -it 交互的虚拟终端# --rm 退出是删除此容器
主从配置
查看 redis master 的内部 ip
docker inspect rediaName #Networks可以得到 redis master 的 ip 地址 修改 redis-slave 的配置文件 # 主地址 slaveof master-ip master-port
重启 redis
docker restart redisName
登录 redis master 使用 info 命令查看从的状态
如果配置不成功记得检查 redis master 的 bind 和 protected-mode 的设置,看下有没有监听内网地址,否则 redis-slave 没办法通过 redis master 的地址做数据同步
Comments | NOTHING