阿里云ecs服务器,docker安装redis 6.2.7 并 远程连接
文章目录
- 阿里云ecs服务器,docker安装redis 6.2.7 并 远程连接
- 1. 拉取redis镜像
- 2. 查看是否下载成功
- 3. 挂载配置文件
- 4. 下载reids配置文件(redis.conf)
- 5. docker创建redis容器
- 6. 查看redis容器运行状态
- 7. 重要命令
- 1. 修改redis.conf文件,需要重新加载,使用如下命令
- 2. 进入容器内部
- 3. 停止运行的Redis
- 4. 删除redis 容器
- 5. 删除Redis镜像(删除容器后进行)
- 8. 使用工具连接redis
- 9. redis.conf配置如下(仅用于参考)
1. 拉取redis镜像
docker pull redis:6.2.7
2. 查看是否下载成功
docker images
3. 挂载配置文件
- 虽然可以通过在启动命令中加环境变量的方式写入配置参数,但是建议你将redis的配置文件挂载出来,这样遇到问题方便排查,也方便你修改配置
- 创建两个文件夹(稍后要用)
mkdir -p /islirj/mydata/redis/conf
mkdir -p /islirj/mydata/redis/data
1: 可以自己定义路径文件夹
2: 这个文件挂载的操作需要在创建容器的时候进行,在第5步:docker创建redis容器时进行操作
4. 下载reids配置文件(redis.conf)
redis配置文件下载
在官网中选择对应的版本即可(需要科学上网),这里我选择6.2版本
- 对redis.conf配置文件进行修改
# 原本:
bind 127.0.0.1
protected-mode yes
# 修改为
# bind 127.0.0.1
protected-mode no # 禁用保护模式,实现远程连接
logfile "/data/redis.log" # 设置日志,和两个文件(data,redis.conf)一起挂载到宿主机
dir /data # 控制备份文件(包括rdb和aof存放在什么路径),一同放在data文件夹下挂载到宿主机,将redis的备份文件持久化,保证重启容器之后,数据也不会丢失
appendonly yes # 开启aof备份(看自身情况进行修改)
requirepass yourpassword # 配置redis密码,这个是必要的,越复杂越好
- redis.conf 需要手动上传到
/islirj/mydata/redis/conf
目录下,data不需要
完整版的redis.conf有2053行,大部分都是注释,我去除掉注释,放在了本文最后,作为参考
5. docker创建redis容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /islirj/mydata/myredis/conf/redis.conf:/etc/redis/redis.conf -v /islirj/mydata/myredis/data:/data -d redis:6.2.7 redis-server /etc/redis/redis.conf --appendonly yes
命令 | 作用 |
---|---|
- - restart=always | 总是开机启动 |
- - log-opt max-size=100m | 设置容器日志文件的最大大小为 100MB。一旦日志文件达到设定的最大大小,Docker 将自动进行日志轮转,即将当前日志文件重命名并创建一个新的日志文件来继续记录日志信息 |
- -log-opt max-file=2 | 设置保留的日志文件数量为 2。当日志文件达到设定的最大数量后,Docker 将删除最旧的日志文件,以确保只保留指定数量的日志文件 |
-p 3306:3306 | 设置端口映射 |
- - name | 给容器取名 |
-v | 数据卷挂载(这里是挂载本地文件或目录) |
-d | 后台启动redis |
redis-server /etc/redis/redis.conf | 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf,也就是/root/islirj/mydata/redis/conf/redis.conf |
- - appendonly yes | 开启redis持久化,死了自动拉起来(需要在redis.conf开启aof备份功能) |
6. 查看redis容器运行状态
docker ps # 列出当前正在运行的容器
docker ps -a # 列出所有的容器,包括正在运行的和已经停止的
如上图所示,即为成功
7. 重要命令
1. 修改redis.conf文件,需要重新加载,使用如下命令
systemctl restart network && systemctl restart docker #重启network服务
2. 进入容器内部
# 命令:docker exec -it <容器名> /bin/bash
docker exec -it myredis redis-cli
3. 停止运行的Redis
# 停止命令:docker stop <容器名>
docker stop myredis # myredis 是我启动redis 命名的别名
4. 删除redis 容器
# 命令: docker rm <容器名称>或者<容器id>
docker rm myredis
5. 删除Redis镜像(删除容器后进行)
#查看全部镜像 命令:
docker images
# 删除镜像 命令 docker rmi <容器 id>
docker rmi <image id>
8. 使用工具连接redis
- ecs服务器设置安全组规则
- 阿里云的服务器默认端口是不对外开放的,如果想要供外部访问,需要在安全组中手动添加规则,开放端口
- 首先去百度,搜索ip,查看自己ip地址,我的ip是182.204.x.x,所以在第4步配置的时候写成182.204.0.0/16; 如果写成0.0.0.0/0代表所有ip都可以访问,有点危险。
- 用工具进行连接
我用的工具是another redis desktop manager,比较推荐这款工具
9. redis.conf配置如下(仅用于参考)
#bind 127.0.0.1
protected-mode no # 禁用保护模式,实现远程连接
port 6379
tcp-backlog 511
requirepass yourpassword # 这个密码一定要写,越复杂越好
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/data/redis.log" # 设置日志位置
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data # 控制备份文件
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes # 开启aof备份
appendfilename "appendonly.aof"
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-max-len 128
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
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes