本人想在docker里部署自定义的redis不过通过docker run -it redis:5.0.5 /bin/bash
,在redis容器中没有找到redis的配置文件位置,最后通过查官方文档解决了:https://hub.docker.com/_/redis。
现将自己的部署过程记录如下:
通过docker使用redis只要两步。
dockerHub的redis:https://hub.docker.com/_/redis
# 查看redis的镜像 不过我们更加推荐在dockerhub官网上看
docker search redis
# 获取redis5.0.5的镜像
docker pull redis:5.0.5
docker run --name some-redis -d redis
这样就启动了
不过通过docker的学习我们知道redis是需要映射端口的,不然这样的镜像不能交互
所以我们使用
docker run --name some-redis -p 6380:6379 -d redis
-p
是将容器内的6379映射到容器外的6380端口,即我们通过访问服务器的6380从而访问redis服务。
如果需要开机启动可以使用-restart always
不过在docker里自定义配置文件似乎不行。
我们看官方文档怎么说:
简述:如果我们想要一个可以自定义配置的redis,需要使用dockerfile自己做一个镜像。。。
好 我们开搞。
准备工作:准备一个redis.conf文件,进入redis.conf的同级目录
首先我们建立一个Dockerfile文件
# 这里注意d要大写 不然后期需要指定文件名
vim Dockerfile
输入一下内容
# 引入redis 5.0.5的镜像
FROM redis:5.0.5
# 将Dockerfile同级目录文件加入容器内的/usr/local/etc/redis/下建立redis.conf
COPY redis.conf /usr/local/etc/redis/redis.conf
# 默认如果不写就执行/usr/local/etc/redis/下的conf作为配置文件
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
docker build -t redis-show:1.0 -f Dockerfile .
注意:如果-f
默认Dockerfile,如果使用这个名字可以不用写;最后面的.
注意不要漏了。
生成完了通过docker images
,查看我们的镜像
放好redis.conf
我们是放在了/home/redis-docker/redisconfig/
文件下
启动执行
docker run -v /home/redis-docker/redisconfig/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 --name redisshow redis-show:1.0 redis-server /usr/local/etc/redis/redis.conf
-v
卷挂载:这里是将主机的/home/redis-docker/redisconfig/redis.conf文件挂载到容器内的/usr/local/etc/redis/redis.conf。这里就是一个自定义配置文件的过程
redis-server /usr/local/etc/redis/redis.conf
这里指,执行了redis-server指令,同时配置文件是/usr/local/etc/redis/redis.conf的这个配置文件。
小结:所谓的自定义卷挂载其实就是通过自定义一个容器,产生一个可以读取配置的容器。
如果使用以上的指令启动以后镜像自动关闭了,那么需要修改配置文件redis.conf里面的:daemonize
,改为no。
因为如果是后台启动,docker进项启动以后没有执行任何事儿就会自动关闭。所以这时候redis应该不要在后台启动,而是在前台启动。
这个选项如果是直接部署我们会选择yes即让redis在后台自启动。