docker redis挂载

2020-12-15  本文已影响0人  哆啦在这A梦在哪
今天帮别人看了一个redis的问题,记录了过程,细节方面还是要注意的,这里i说一下,主要是这个路径的问题

1.查找并拉取redis

注意的是

[root@localhost docker]# docker pull redis:4.0.1
[root@localhost docker]# docker search redis

直接启动

docker run -itd --name redis-test -p 6379:6379 redis

注意的是,当你在容器中寻找的时候,是找不到配置文件的,所以如果要修改配置,还得自己加一个配置文件,然后使用该配置文件进行重新run一个容器。可以直接加入容器中然后启动,不过更推荐使用挂载的方式,因为这样更利于修改和查看,以及对应的持久化目录或者log目录也一样的配置,下面使用挂载的方式进行操作。

增加配置文件

bind 127.0.0.1 #限制redis只能本地访问,有其他需求可自行修改

protected-mode no #默认yes,开启保护模式,自选

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

logfile /opt/redis.log //对应log日志地址,挂载再宿主机上

dir /opt/data #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

注意

1.路径都需要存在

注意你挂载地址的关系,中间不能有不存在的地址,比如上述 /opt/data,容器中实际没有data这个目录,但是data挂载了宿主机的/opt/reids/redis_2/data中的data,他之前的都有,所以没事,如果你容器这个中间加一个其他不存在的路径,变成/opt/redis/data,redis目录不存在,对应宿主机有没有挂载对应,就会出错了

2.文件权限

宿主机上的log文件,要给他一个执行权限

完整代码

docker run -P --net=host --name redis_2 -v /opt/reids/redis_2/log/redis.log:/opt/redis.log -v /opt/reids/redis_2/data:/opt/data -v /opt/redis/redis_2/redis.conf:/opt/redis.conf  -d redis redis-server /opt/redis.conf 

参数解释说明:

-P 端口映射:使用本身对应的端口,于net参数相关使用
--net=host 使用host网络模式,直接使用宿主端口
这两步你可以使用-p的端口映射,网络模式自己注意,毕竟要相互交互的。

--name myredis 指定该容器名称,查看和进行操作都比较方便。(可选,不指定名字就不用)

-v 挂载目录,规则与端口映射相同。用冒号隔开,前面是宿主机地址对应后面容器地址,意思是当使用该路径下的文件或者路径时,去使用对应宿主机上的文件或路径,容器中也不需要有。

以这里的为例: 
-v /opt/reids/redis_2/log/redis.log:/opt/redis.log //容器中opt下找redis.log,会去宿主机/opt/reids/redis_2/log找
-v /opt/reids/redis_2/data:/opt/data//容器中opt下找data,会去宿主机/opt/reids/redis_2找data
-v /opt/redis/redis_2/redis.conf:/opt/redis.conf//容器中opt下找redis.conf,会去宿主机/opt/redis/redis_2/redis.conf找
重要: 配置文件映射,docker镜像redis 默认无配置文件。

-d redis 表示后台启动redis

redis-server /etc/redis/redis.conf //以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis/redis.conf
//注意这里的目录,是你配置文件中的那个目录,别写错了,不要直接写宿主机上的目录

重要: docker 镜像reids 默认 无配置文件启动

--appendonly yes 开启redis 持久化(可以再配置文件中写)
上一篇 下一篇

猜你喜欢

热点阅读