安装Redis
1、拉取redis镜像
最好选择LTS版本的Redis,这里选择长期支持的6.2.x版本
shell
sudo docker pull redis:6.2.21

2、准备配置文件redis.conf
为什么需要准备这个配置文件
因为默认启动命令docker run --name some-redis -d redis是以docker内部默认参数去启动redis,无密码也不能修改连接参数,因此选择指定配置文件去启动redis更加方便我们日后对redis的维护
这个配置文件放在文章末尾 ,如果你之前装过redis,去到安装目录下copy一份就好,都是一样的,具体的配置参照Ubuntu部署Redis6.2.x版本和配置开机自启,我这里把配置文件放在/home/yun/Documents/redis下
配置redis.conf文件
文件参考文章末尾 ,这里补充一下知识点,运行docker时指定本机配置文件映射到docker中-v/home/yun/Documents/redis/redis.conf:/etc/redis/redis.conf,这种方式叫做挂载,由于docker是一个独立的运行环境,一旦容器被删除,所有文件都会跟着删除,将配置文件放在容器中,更改需要进入容器内部,比较麻烦
采用挂载方式,配置文件放在本机中,通过挂载到docker容器内部,每次修改时会同步到容器内部的配置文件,重启redis只需要执行sudo docker restart redis,新的配置文件就会生效
3、运行Redis
shell
sudo docker run -p 9736:6379 --name redis -v /home/yun/Documents/redis/redis.conf:/etc/redis/redis.conf -v /home/yun/Documents/redis/data:/data -d redis:6.2.21 redis-server /etc/redis/redis.conf
--name redis:运行名称,这个名称可以随意
-p 9736:6379:第一个端口为外部访问端口,第二个端口为redis在docker中的运行端口
-v /home/yun/Documents/redis/redis.conf:/etc/redis/redis.conf:指定配置文件
-v /home/yun/Documents/redis/data:/data:数据存放的地方
-d:后台运行
redis:tag:运行的redis镜像,这里是6.2.21版本,如果是使用最新版,可以省略后面的tag
redis:6.2.21 redis-server /etc/redis/redis.conf:指定配置文件地址
4、查看运行日志
shell
sudo docker logs --since 30m redis

5、进入容器内部测试连接
shell
sudo docker exec -it redis redis-cli

6、测试配置文件同步更新
这里我将/home/yun/Documents/redis下的配置文件中requirepass更改为12345678910,原本是123456,重启redis后使用原密码登录会被拒绝,说明本机配置文件更改后,容器内部配置文件也会更改


远程连接Redis
1、cmd命令行
shell
redis-cli -h 192.168.242.137 -p 9736 -a 123456
-h:ip地址
-p:端口号,这里指docker暴露出来的9736端口
-a:密码

图形化界面
在Redis客户端中输入参数连接即可


附录Redis.conf文件
推荐还是去之前安装过的redis中复制一个配置文件,由于原本的文件存在大量注释,直接粘贴会非常多,这里是使用脚本过滤掉所有注释后生成的
shell
bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
requirepass 123456
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
lazyfree-lazy-user-flush no
oom-score-adj no
oom-score-adj-values 0 200 800
disable-thp yes
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes