1、Docker redis指定版本拉取和启动
拉取指定版本的镜像:docker pull redis:6.2.0
拉取官方的 redis.conf 配置文件,注意版本【自己redis是6.2.0但是配置文件拉取最新的,可能导致很多配置不支持】,或者可以使用下面的该配置【已上传至阿里云,也在本博客最后附录配置文件内容】:链接: https://pan.baidu.com/s/1JFsFEWHAKzjHVfrjMQVwlQ?pwd=w2jv
修改redis配置项,更多配置可以参考:https://blog.csdn.net/it_lihongmin/article/details/115842591
- 修改bind的ip【即可以访问的ip白名单】:bind 0.0.0.0 不能修改为:bind 0.0.0.0 -::1
- 保护模式,可以修改为no,客户端可访问:protected-mode no
- 是否为后台启动:daemonize no, 如果docker run启动是增加了-d即后台启动了,这里一点设置为no,否则启动不起来,并且 docker logs --tail=20 container_id 日志还为空,坑死了
- 设置密码登陆,建议设置:requirepass mosty123
- 持久化机制之aof【保存执行的命令】:appendonly yes
- 再结合配置aof日志文件:appendfilename "appendonly.aof"
- 再结合回写时机,建议每秒:appendfsync everysec【可选 no、always】
- 持久化之rdb:save 900 1 #表示多少秒之内有多少个key发生变化,则会触发保存rdb,这里使用:
save 3600 1
save 300 100
save 60 10000
关于rdb和aof根据使用情况设置,如果redis重启数据可以使用旁路缓存(Cache Aside)保存,不影响业务可以两者都不开启,如果性能要求不高,建议开始rdb (值配置大一些),aof也建议开启并且每秒持久化。
下面就直接使用命令创建并启动docker镜像:启动说明:
- -p 6379:6379 将docker与centos的端口进行挂载;
- --name mosty-redis 启动的docker名称;
- -v 将服务器/home/mosty/redis/redis.conf配置文件挂载到docker的/etc/redis/redis.conf;
- -d redis:6.2.0 后台启动redis;
- redis-server /etc/redis/redis.conf 启动redis,使用docker中的配置文件,最终只有挂载的地址;
- --appendonly yes 使用命令行的方式开启aof日志,优先级高于配置文件【建议使用配置】;
- --requirepass mosty123 使用命令行方式开启访问密码,优先级高于配置文件【建议使用配置】;
docker run --privileged -it \
-p 6379:6379 --name mosty-redis \
-v /home/mosty/redis/redis.conf:/etc/redis/redis.conf \
-v /home/mosty/redis/data:/home/mosty/redis/data \
-d redis:6.2.0 redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass mosty123
启动前面建议将data目录执行创建,并且将 redis.conf 设置权限比如:chmod 777 redis.conf
2、Docker Redis并打成镜像在其他内网环境部署
将当前docker打成包,方便后没有镜像不能docker pull时使用:
docker save -o docker-redis6.2.0.tar.gz redis:6.2.0
也可以使用 docker save 【id】> docker-redis6.2.0.tar.gz redis:6.2.0
在其他不能连外网镜像进行拉取的时候,可以将 tar.gz 镜像包上传到服务器指定位置,再导入。
cd命令跳转到tar.gz存放目录,在执行载入命令:docker load < docker-redis6.2.0.tar.gz
然后跟上面一样设置redis.conf, 并且使用 docker run命令启动即可。。。
3、Docker安装Reids遇到的问题
1、docker 启动失败,docker logs --tail 200 container_id 日志也为空
可以去查询linux机器日志: tail -n 100 /var/log/messages
2、auditd[441]: Audit daemon rotating log files
Apr 30 23:19:46 iZ2ze4zhiwnwqxsc7wehwlZ kernel: docker0: port 1(veth87f7d0b) entered disabled state
Apr 30 23:19:46 iZ2ze4zhiwnwqxsc7wehwlZ kernel: docker0: port 1(veth87f7d0b) entered disabled state
Apr 30 23:19:46 iZ2ze4zhiwnwqxsc7wehwlZ kernel: device veth87f7d0b left promiscuous mode
Apr 30 23:19:46 iZ2ze4zhiwnwqxsc7wehwlZ kernel: docker0: port 1(veth87f7d0b) entered disabled state
Apr 30 23:20:01 iZ2ze4zhiwnwqxsc7wehwlZ systemd: Started Session 867 of user root.
Apr 30 23:26:06 iZ2ze4zhiwnwqxsc7wehwlZ auditd[441]: Audit daemon rotating log files
最后找到原因docker run的时候设置了 -d参数(后台)启动; redis.conf 中也设置了
daemonize no结果就是docker logs没有日志,并且查看tail -n 100 /var/log/messages机器日志也是没那么清晰。