Docker安装redis,并设置持久化详细教程

docker安装指定版本TAG的镜像

Redis的历史版本下载

docker安装redis

Docker安装最新Redis6(redis-6.2.7)(参考官方文档)


镜像下载

拉取镜像

拉取最新版本镜像

docker pull redis;

拉取指定版本镜像

docker pull redis:6.2.0;

已拉取镜像

docker images;

+++ 获取指定版本TAG镜像
hub.docker.com


+++

创建实例并启动

创建配置文件目录

mkdir -p /home/docker/redis/conf

redis版本下载对应redis.conf配置文件

https://redis.io/docs/management/config/

修改配置

vi /home/docker/redis/conf/redis.conf

大坑注意:

daemonize no #不要修改,否则启动失败且无日志可查

推荐修改配置

#bind 127.0.0.1 -::1
protected-mode no
requirepass 123456
appendonly yes
  • #bind 注释,解除本地连接限制
  • protected-mode 保护模式,限制为本地访问,修改后解除保护模式
  • requirepass 设置访问密码
  • appendonly 开启持久化

持久化配置参数

博客内链|Reids持久化详解

  • appendfilename “appendonly.aof” #生成文件名称 (默认)
  • appendfsync everysec #日志追加频率-每秒 (默认)

启动容器

docker run -d \
-p 6379:6379 \
--name redis \
--privileged=true \
--restart=always \
-v /home/docker/redis/data:/data \
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
redis:6.2.0 \
redis-server /etc/redis/redis.conf

移除容器

docker rm 名称or镜像id;

实例启动成功

命令查看

docker ps ; #查看成功运行的容器
docker ps -a ; #查看所有容器

错误记录

错误01

解决方案:

docker 报错 /usr/bin/docker-current: Error response from daemon: driver failed programming external

解决命令:

#重启docker进程
systemctl restart docker

错误信息:

/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint redis (72144e08d14644cf8b86282112928608afcbfa1feff8ab1450a784e2c504ab2c):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.2:6379 ! -i docker0: iptables: No chain/target/match by that name.

问题原因(我确实有关闭firewall进程这一步操作):

错误02

redis.conf文件要与redis的版本一致,如果下载不对应的配置文件时,部分属性会报错。

>>> 'repl-diskless-sync-max-replicas 0'
Bad directive or wrong number of arguments

docker下查看容器的redis版本号信息

docker exec -it 容器名称 redis-server -v

打印如下信息:
Redis server v=6.2.6 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=b61f37314a089f19

指定redis版本配置文件下载:
官方地址:https://redis.io/topics/config/