基于docker安装redis服务

Redis是我们在项目中经常需要使用的缓存数据库,安装redis的方式也有很多,本文主要是给大家讲解如何基于docker进行redis服务的安装,主要介绍,如何拉取redis镜像、如何挂载redis的数据以及使用redis的配置文件和开启认证等功能,希望对大家能有所帮助。

拉取镜像

复制代码
docker pull redis

以上命令会从docker hub上拉取redis官方的镜像,如果拉取不成功,有可能是已有的镜像仓库不能使用了,可以参考docker镜像配置-CSDN博客,里面有详细的镜像仓库的配置,配置后,可以拉取到镜像。

启动容器

复制代码
docker run --name redis -d -p 6379:6379 redis

通过以上命令,可以启动一个redis容器,但这是一个简单的命令,用于创建一个redis服务,但该命令仅仅适用于演示的目的,因为没有挂载卷,所以容器销毁后,数据便也销毁了。

挂载卷

为了在容器销毁后,还可以持久化数据,我们需要挂载数据卷,以便持久化redis的数据

复制代码
docker run --name redis -d  -v redis-data:/data  redis:6.0 --save 60 1

如上所示,我们使用卷redis-data(启动容器时,会自动创建改卷,如有不解,可通过课程https://edu.csdn.net/course/detail/39643 学习),将其挂载到了容器的data目录中;--save标志会传递给Redis服务器。它配置要使用的持久化策略。本示例每 60 秒写入一次数据库快照。除非自上次快照后发生过 1 次数据库写入,否则该操作将被跳过。

配置文件

添加配置参数的最快捷方式,是将 CLI 参数作为 docker run 命令的一部分传递给 Redis 服务器。上面的 --save 例子就说明了这一点。在 docker run 中,映像名称后面的任何内容都会传递给容器内执行的命令。在 Redis 镜像中,这个命令就是 Redis 服务器。

使用 CLI 标志很快就会变得重复。你可以在服务器的第一个参数中传递一个路径,让 Redis 使用一个配置文件。该文件通常位于 /usr/local/etc/redis/redis.conf。使用 Docker 绑定挂载,从挂载到容器的本地文件系统中获取 redis.conf:

复制代码
docker run --name redis -d \
    -v redis-data:/data \
    -v ./redis-conf:/usr/local/etc/redis \
redis /usr/local/etc/redis/redis.conf

将redis的配置文件放到运行docker命令的所在目录中的redis-conf目录下;以上命令中的第二个-v 会将宿主机中的redis-conf目录下的所有配置文件同步到宿主机的/usr/local/etc/redis目录中,而命令的最后一部分/usr/local/etc/redis/redis.conf是启动redis时使用的配置文件,所以需要确保宿主机的/redis-conf目录下,有个redis.conf配置文件,作为启动redis时使用的配置源。

配置远程访问

Redis启动后,默认无法远程访问的,只能本机访问,为了使得可以远程访问redis,需要修改redis.conf配置文件,将bind 127.0.0.1 注释掉,并将protected-mode的值设为no,如下图所示:

修改完配置文件后,重启redis容器,便可远程访问redis服务了

添加密码

为了保证redis服务器的安全,我们需要为redis设置密码,这样只有通过密码校验的远程才可以连接,从而保证了服务的安全,修改配置如下:

将改行的注释去掉,并将foobared改完自己需要设置的密码即可。修改后,保存配置文件并重启docker的redis容器,重启后,可以发现,如果不配置密码,则无法连接到redis服务。

注意,为了保证redis的安全,建议不要使用redis的默认端口6379,而换一个其他的端口号,如下命令,使用16379端口

复制代码
docker run --name redis -d -p 6379:6379 -v redis-data:/data -v /opt/server/docker/redis:/usr/local/etc/redis     redis /usr/local/etc/redis/redis.conf

如上所示,我们开发了宿主即的16379端口,这样远程连接时,使用该端口和设置的密码即可!

配置文件的下载地址:

https://raw.githubusercontent.com/redis/redis/6.2/redis.conf

相关推荐
都叫我大帅哥5 分钟前
🌊 Redis Stream深度探险:从秒杀系统到面试通关
java·redis
都叫我大帅哥6 分钟前
Redis持久化全解析:从健忘症患者到记忆大师的逆袭
java·redis
Jiude42 分钟前
MinIO 社区版被故意阉割,Web管理功能全面移除。我来试试国产RustFS
后端·docker·架构
野蛮人6号1 小时前
黑马点评系列问题之基础篇p7 06初识redis无法在虚拟机查到图形化界面存进去的键
redis·黑马点评
飞询1 小时前
Docker 安装 Elasticsearch 9
elasticsearch·docker
大春儿的试验田3 小时前
高并发收藏功能设计:Redis异步同步与定时补偿机制详解
java·数据库·redis·学习·缓存
hqxstudying4 小时前
Redis为什么是单线程
java·redis
ladymorgana5 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
有点小帅得平哥哥5 小时前
本地部署index-tts并且通过docker做成镜像
docker·index-tts
Fireworkitte6 小时前
Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
数据库·redis·sentinel