基于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

相关推荐
Oak Zhang1 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
门牙咬脆骨2 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨2 小时前
【Redis】GEO数据结构
数据库·redis·缓存
意疏3 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant3 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist4 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
wanmei0025 小时前
Dockerfile复制目录进入镜像里
docker
inter_peng5 小时前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka
Linux运维日记5 小时前
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
linux·docker·云原生·容器·kubernetes
Dlwyz6 小时前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存