Docker安装redis并以配置文件方式启动

关于docker安装redis,网上有各种教程。大家可自行安装,写这篇文章的目的是关于以配置文件挂载的方式启动失败的总结

一、Docker安装Redis
个人参考博文:https://blog.csdn.net/u010358168/article/details/97143703

  1. 安装Redis

通过docker search redis查看redis镜像

在这里插入图片描述

通过docker pull redis:latest下载镜像
docker images查看镜像docker

在这里插入图片描述
到这里Redis就已经下载完成

但是启动redis之后,使用如: Redis Desktop Manager等连接工具连接时,发现连接不上,那是因为 redis 默认配置只能够本地连接,不能进行远程访问,因此需要手动挂载 redis 配置文件

二、挂载redis配置文件

  1. 新建挂载配置文件夹

新建data和conf两个文件夹,位置随意。
在这里插入图片描述
eg:

	mkdir  /docker-software/redis/data
	mkdir  /docker-software/redis/conf
	或者
	mkdir -p ./redis/{data,conf}

2.下载官网的配置文件并修改 redis.conf:redis.conf下载
http://download.redis.io/redis-stable/redis.conf

修改启动默认配置

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

redis通过配置文件设置密码

requirepass foobared

requirepass 123456

3.把redis.conf文件上传到配置的文件夹下
在这里插入图片描述
4.docker 启动 redis

docker run -d --privileged=true -p 6379:6379 -v /docker-software/redis/conf/redis.conf:/etc/redis/redis.conf  -v /docker-software/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes

命令说明
-p 6379:6379:把容器内的6379端口映射到宿主机6379端口
-v /usr/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中
-v /usr/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份 redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
–appendonly yes:redis启动后数据持久化

***在这里重点说明:***
我使用上边命令启动的时候失败,度娘也没有告诉我为什么
后来研究了下docker镜像及挂载原理	

发现,其实:

redis-server /etc/redis/redis.conf

也可以不需要加,至于原因可参考博文:
Docker镜像原理、Docker数据卷(挂载)作用和使用

我使用的是:
docker run -p 6379:6379 --name redis -v /docker-software/redis/redis.conf:/etc/redis/redis.conf -v /docker-software/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

  1. 启动成功,查看状态
    通过docker ps查看启动状态,是否成功
    在这里插入图片描述

  2. 使用Redis Desktop Manager客户端进行连接
    界面简单,一看就懂,直接上图。
    在这里插入图片描述

  3. 小结
    如果使用阿里云等,请务必把相应端口打开


版权声明:本文为weixin_46244732原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。