一、找到一个合适的docker的redis的版本
可以去docker hub中去找一下:https://hub.docker.com/_/redis?tab=tags,docker中我选择6.0版本,对应redis真实版本6.0.16。
二、使用docker拉取redis
docker pull redis:6.0
安装好之后使用docker images 即可查看
三、准备redis的配置文件
因为需要redis的配置文件,这里最好还是去redis的官方去下载一个redis使用里面的配置文件即可,我下载的是:redis-6.0.16.tar.gz
redis中文官方网站:http://www.redis.cn/download.html
redis历史版本地址:http://download.redis.io/releases/
下载后解压出来:
这个 redis.conf
文件就是咱们需要的,为了保险,还是拷贝一下,做个备份。
四、配置redis.conf配置文件
修改redis.conf配置文件:
主要配置的如下:
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no #用守护线程的方式启动
requirepass 你的密码 #给redis设置密码
appendonly yes #redis持久化 默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
五、创建本地与docker映射的目录,即本地存放的位置
创建本地存放redis的位置;
可以自定义,因为我的docker的一些配置文件都是存放在/docker目录下面的,所以我依然在/docker目录下创建一个redis目录,这样是为了方便后期管理
mkdir -p /docker/redis /docker/redis/data
把配置文件
拷贝到刚才创建好的文件里
我是windows系统,使用ftp拷贝过去,如果你是Linux操作系统,可以直接拷贝过去。
cp -p redis.conf /docker/redis/
六、启动docker redis
启动:
docker run -d -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --restart=always redis:6.0 redis-server /etc/redis/redis.conf --appendonly yes
参数解释:
-p 6379:6379:把容器内的6379端口映射到宿主机6379端口
-v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中
-v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份
redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes:redis启动后数据持久化
--restart=always:此参数能够使我们在重启docker时,自动启动相关容器。
七、查看是否启动成功
查看是否成功启动:sudo docker ps
- [root@localhost ~]# sudo docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 7e1e3ec55bc3 redis:6.0 "docker-entrypoint.s…" 12 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
- 0a664907556c postgis/postgis:12-3.2 "docker-entrypoint.s…" 2 days ago Up 2 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgis
- [root@localhost ~]#
可以查看一下日志:docker logs redis
- [root@localhost ~]# docker logs redis
- 1:C 29 Aug 2022 02:39:04.068 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
- 1:C 29 Aug 2022 02:39:04.068 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=1, just started
- 1:C 29 Aug 2022 02:39:04.068 # Configuration loaded
- _._
- _.-``__ ''-._
- _.-`` `. `_. ''-._ Redis 6.0.16 (00000000/0) 64 bit
- .-`` .-```. ```\/ _.,_ ''-._
- ( ' , .-` | `, ) Running in standalone mode
- |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
- | `-._ `._ / _.-' | PID: 1
- `-._ `-._ `-./ _.-' _.-'
- |`-._`-._ `-.__.-' _.-'_.-'|
- | `-._`-._ _.-'_.-' | http://redis.io
- `-._ `-._`-.__.-'_.-' _.-'
- |`-._`-._ `-.__.-' _.-'_.-'|
- | `-._`-._ _.-'_.-' |
- `-._ `-._`-.__.-'_.-' _.-'
- `-._ `-.__.-' _.-'
- `-._ _.-'
- `-.__.-'
-
- 1:M 29 Aug 2022 02:39:04.069 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
- 1:M 29 Aug 2022 02:39:04.069 # Server initialized
- 1:M 29 Aug 2022 02:39:04.069 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
- 1:M 29 Aug 2022 02:39:04.069 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
- 1:M 29 Aug 2022 02:39:04.075 * Ready to accept connections
- [root@localhost ~]#