Docker安装Redis以及以配置文件方式启动Redis(docker安装的请别乱下载redis.conf文件)
发布日期:2021-06-29 21:37:40 浏览次数:2 分类:技术文章

本文共 4697 字,大约阅读时间需要 15 分钟。

首先确保你已经安装好了docker,如果没安装好,可以简单参考一下

一、docker安装redis

1、搜索redis镜像

docker search redis

2、拉取redis镜像(不指定版本则默认最新版)

docker pull redis    //不指定版本,默认拉取最新版docker pull redis:6.0.8 //版本看自己需要了

3、查看镜像

docker images

在这里插入图片描述

二、docker启动redis

首先确保你的docker启动了的。通过以下命令查看docker是否启动。

ps -ef |grep docker    查看docker是否启动。systemctl start docker   启动dockersystemctl status docker  查看docker 服务状态systemctl enable docker  设置开机自启动

如下图表示docker正在运行。

在这里插入图片描述
好了,回到启动redis步骤。这里提供两种方式启动redis,第一种直接启动,第二种采用外部配置文件方式启动。

2.1 直接启动

docker run -d -p 6379:6379 --name 【名字随便取例如myredis】 【redis镜像的repository,通过docker images命令查看】举个栗子:docker run -d -p 6379:6379 --name myredis redis参数说明:-d表示后台运行redis,不至于shutdown就直接退出redis进程了-p 6379:6379 暴露端口,做一个端口映射,映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。myredis:随便取一个名字redis:redis镜像的repository,通过docker images命令即可查看到

启动之后通过以下命令查看是否成功启动。

docker ps

在这里插入图片描述

接下来就可以通过以下命令连接redis服务器了。

docker exec -it myredis redis-cli简单参数说明:myredis为启动的redis服务器名字

在这里插入图片描述

2.2 通过外部配置文件redis.conf启动redis

敲重点,首先需要知道一个问题,docker拉取的redis镜像是没有redis.conf文件的。因此,就需要我们官网上找一个相对应版本的的redis.conf配置文件,可以往低一点点版本找,因为高版本意味着一些bug修复,配置文件中可能会多一些东西(我就是因为这个弄了许久的)

2.2.1 下载redis.conf

在这里插入图片描述

这里给出redis的,拉取的镜像是最新的,那么下载上面的redis.conf不会因为配置文件出问题而不能启动。
这个准备工作做好了之后,下面就开始使用docker外部配置文件redis.conf启动redis了。

2.2.2 创建外部目录存放配置文件及数据

首先创建配置文件目录存放上面下载的redis.conf配置文件。同时创建data文件夹做数据挂载。这个你可以随便创建,但是位置要记得,因为后面要用。下面给出我创建的为例:

sudo mkdir /usr/local/docker/redis/confsudo mkdir /usr/local/docker/redis/data

我这里创建的目录结构

在这里插入图片描述
然后找到下载的redis.conf文件,将其copy到刚刚创建的/usr/local/docker/redis/conf目录下,

cp  [你的redis.conf文件所在路径]  .解释:中建你的redis.conf路径一定要正确,一般采用绝对路径找到,比如我的redis.conf文件在/etc/redis/redis.conf那么我的复制命令为cp /etc/redis/redis.conf .最后面的  .  表示的是当前目录,因为此时我已经cd到/usr/local/docker/redis/conf下了,否则还是使用绝对路径cp /etc/redis/redis.conf /usr/local/docker/redis/conf/

可根据个人情况修改一些默认配置。(不是必要的最好不修改)

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,意为是否以守护进程方式启动,可后台运行,不要改为yes 否则可能redis会启动失败
databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)

接下来我们就可以使用docker通过我们的外部配置文件redis.conf启动redis了。

docker run -d --privileged=true -p 6379:6379 -v /usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data --name myredis redis redis-server /usr/local/etc/redis/redis.conf

参数解释:

-d:设置redis后台运行
--privileged=true:大约在0.6版,privileged被引入docker。使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
-p 6379:6379 :映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
-v :挂载目录,规则与端口映射相同。Docker目录挂载可以参见
/usr/local/docker/redis/conf/redis.conf:就是之前我们创建的外部配置文件目录
/usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:这样在容器启动后,容器内会自动创建/usr/local/etc/redis/redis.conf的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
/usr/local/docker/redis/data:/data :映射数据目录
redis-server /usr/local/etc/redis/redis.conf:以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis/conf/redis.conf

建议第一次启动不加-d这样在报错之后可以显示出错误信息,如果加上了但是启动不成功想看错误信息的,可以查看docker日志信息。给出简单查看docker日志的命令,详细的docker日志命令参见:

sudo docker logs -t --tail 100 myredis简单参数解释:-t:显示时间100:显示最近100行数据myredis为启动的redis的name

这样每次输入一长串命令太麻烦了,我们通过制作简单脚本进行启动就比较方便了。

mkdir start.sh//创建启动redis脚本文件start.sh。将启动命令放入其中保存并退出。chmod +777 start.sh 修改权限777 代表 rwxrwxrwx 所有用户都可读可写可执行。sh start.sh//启动redis的脚本,将启动命令放入其中即可

关于Linux文件权限简单示例:

在linux终端先输入ll,可以看到如:
-rwx-r--r--(一共10个参数) 表示文件所属组和用户的对应权限。
在这里插入图片描述
在当前目录是根目录情况下,如果ll未找到命令

sudo vim ~/.bashrc

找到alias ll=’ls -l’将前面的’#’(注释)去掉就可以了。(快速查找,vi命令模式下,esc然后输入/,再输入查找内容即可)

参数解释:
第一个跟参数属于管理员,跟chmod无关,先不管.

2-4参数:属于user5-7参数:属于group8-10参数:属于others接下来就简单了:r==>可读 w==>可写 x==>可执行               r=4      w=2      x=1所以755代表 rwxr-xr-x 777 代表 rwxrwxrwx 所有用户都可读可写可执行。

docker基本命令

查看所有镜像 docker images删除镜像(会提示先停止使用中的容器) docker rmi  镜像name/镜像id查看所有容器 docker ps -a查看容器运行日志 docker logs 容器名称/容器id停止容器运行 docker stop 容器name/容器id终止容器后运行 docker start 容器name/容器id容器重启 docker restart 容器name/容器id删除容器 docker rm 容器name/容器id

下面关于我在本次过程中遇到的巨坑,其实上面也说了,我之前拉取的redis镜像是6.0.5版本的,然后在网上随便下了一个redis.conf文件(最新版本6.0.8的),然后突然看到说redis6.0.8出现了一些紧急更新(做了哪些更改可参见),其中就有

在这里插入图片描述
这些参数在6.0.8以前是没有的(据我所观察的一些版本的配置文件是没有的),因此直接导致在以配置文件方式启动redis时候在oom-score-adj no这一行就开始报错,于是乎我就找到这个配置文件将这两行注释掉。报错的时候会显示错误行号,因此我们vi进入文件时候可以快速查找,也可以通过让配置文件显示行号方式找到报错位置修改。
vi模式下显示行号命令为:

1、先按esc 2、输入  :(冒号)3、输入 set number或者set nu即可显示行号

修改后保存退出就可以重新启动了。

最后redis想要安全一点尽量设置密码,虽然有些时候有点麻烦。

获取redis密码:config get requirepass    设置redis密码:config set requirepass  “123456"   设置密码之重新验证身份:auth 123456

这个也可以在redis配置文件中设置,然后重新以修改之后的配置文件启动redis.

扩展

我们docker pull下来的镜像放哪儿了?
通过docker –version命令我们可以查看docker版本。
docker目录一般位于/var/lib/docker
在这里插入图片描述
其中两个目录:

containers:每个序列号都是一个imageimage文件夹:里面有repositories.json的文件,详细记录了各镜像的一些信息。

进入containers,每个序列号都是一个image

在这里插入图片描述
希望能帮助大家,如果有什么错误地方,也欢迎各位指出,帮助后来人。

转载地址:https://dh-butterfly.blog.csdn.net/article/details/109776892 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis6.0配置文件详解
下一篇:Linux创建、删除文件/文件夹命令

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月28日 13时15分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章