docker安装redis并以配置文件启动(解决配置文件启动导致容器闪退问题)
前言
我之前自己在linux上安装redis,并以配置文件启动非常完美,没有一点问题,但是因为学过一段时间的docker,所以今天想用docker安装redis,并以配置文件启动(如果不用配置文件启动就直接使用docker run --name 自己起一个redis容器名 -d redis
)。结果就疯狂出错,一个多小时,泪奔。但是我解决啦,来谈谈我的解决历程
第一步,docker下载redis 镜像
操作流程
- 进入docker hub,搜索redis,确定要下载的版本,这次版本我选择6.0.10(网上的兄弟选哪个版本都行啊)
- 在自己的服务器(虚拟机)上使用
docker pull redis:6.0.10
命令下载redis镜像,支持redis镜像下载完毕
来个截图
第二步、启动redis
在docker hub中搜索的redis镜像页面里是由关于redis的启动的(关于docker启动镜像一定要看docker hub,介绍的非常详细,不要自己瞎搞,真的),看不懂中文的小伙伴,直接右键一键翻译,然后,往下滑,找到这一部分。
在我的截图中你看到这这么一行命令docker run -v /myredis/conf:/usr/local/etc/redis -d --name myredis -p 6379:6379 redis:6.0.10 redis-server /usr/local/etc/redis/redis.conf
,可能有的兄弟看到这行带这么多的参数的代码一下就蒙了,所以我带大家分析一波这行命令
docker run
:第一次启动容器使用的命令-v 宿主机目录:容器目录
:是容器数据卷技术,不理解的话就是,我宿主机(服务器)/myredis/conf
的这个目录与容器内/usr/local/etc/redis
的目录实现文件共享,也就是服务器/myredis/conf
下的所有文件容器中的/usr/local/etc/redis
也有。所以兄弟们可以把redis.conf
这个配置文件放在/myredis/conf
目录下,这样等会儿容器的/usr/local/etc/redis/
目录下就能有这个配置文件了,就可以通过这个配置文件启动了(目录的名字,大家想起啥起啥,不用跟我起的目录名一样)-d
:作用是让容器以后台方式运行--name myredis
:这个myredis就是我自己指定容器的名字,不指定docker默认给你分一个名字redis:6.0.10
:镜像的全程,这个地方你也可以替换成镜像IDredis-server /usr/local/etc/redis/redis.conf
:是根据配置文件redis.conf启动redis服务,这个配置文件的路径是跟你前面做的容器目录usr/local/etc/redis
是一致的,不然铁定找不到这个配置文件 。然后就启动成功了。-p 6379:6379
:宿主机与容器映射6379端口,使得其他人可以从外界通过访问该容器
redis.conf从哪下载,好,这是一个好问题
我也没什么好办法,我的办法就是去redis官网下载一个redis.tar.gz,然后解压,拿到redis.conf然后放在我的/myredis/conf/
的目录下面了,呜呜,如果有兄弟有好办法,在下面评论一下,谢谢。
第三步、docker启动redis出现闪退(有的兄弟错误的修改了redis.conf)
兄弟们在修改redis的时候跟定是根据自己的需要来进行一些配置的,比如说把bind注释掉,设置一下redis的连接密码等等,好,这些操作都不会导致闪退,导致闪退的唯一可能就是,你在redis.conf中把daemonize
设置为了yes
有的兄弟不理解,不就是应该让redis设置为后台启动(或者说设置为守护进程)吗,但是这一次请不要这么做,给大家说说原因,首先我们的容器是:环境+软件,就是centos的环境加上redis软件,本来这个容器的环境启动时就一个redis进程在运行着,结果你把redis也设置为后台启动了,那centos环境没有一个正常的进程,都是守护进程,可不就关机了,也就意味着容器结束运行,所以你的容器启动就闪退。
上个图
四、其他
本篇博客中出现了一些名词像守护进程,还有什么容器数据卷技术不是一些新名词,操作系统会讲守护进程,自己私下了解来接,如果容器数据卷不知道的话,其实意味着你的docker还没入门-_-