参考:
- docker redis 官网https://hub.docker.com/_/redis/
- redis 官网 https://redis.io/download
安装 6.2.5 版本
修改 redis.conf 配置:到redis官网上下载一个6.2.5版本压缩包,取得里面的redis.conf,来修改,以备用。
写 redis_Dockerfile 文件
# for redis
FROM redis:6.2.5
# the owner for this image
MAINTAINER chenjd
# set time zone
ENV TIME_ZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
#################################
# for jdk
# do nothing
#################################
# for app path
RUN mkdir -p /home/admin/redis/data
RUN mkdir -p /home/admin/redis/logs
RUN mkdir -p /home/admin/redis/conf
#################################
# for redis conf (实际上外面有-v映射进来,这里可以不要cp)
COPY redis.conf /home/admin/redis/conf/redis.conf
#暴露需要用到的端口,这里的端口是根据你配置的 redis.conf 配置文件中的端口
EXPOSE 6379
#镜像实例启动后执行命令
CMD ["redis-server","/home/admin/redis/conf/redis.conf"]
制作docker镜像
docker build -f redis_Dockerfile -t my_redis .
启动镜像
# 创建映射目录
mkdir -p /home/admin/redis/data
mkdir -p /home/admin/redis/logs
# 千万不要挂载这个目录进去,否则会把里面的 文件覆盖掉
mkdir -p /home/admin/redis/conf
# 把 配置文件拷贝一份到conf下,否则 -v 时会把容器里面的配置文件夹覆盖了
cp redis.conf /home/admin/redis/conf/
# 试一下,这样是否可以
touch /home/admin/redis/logs/redis_6379.log
chmod -R 777 /home/admin/redis
# 启动一个镜像实例
docker run -it --name my_redis --privileged=true -v /etc/localtime:/etc/localtime -v /home/admin/redis/data:/home/admin/redis/data -v /home/admin/redis/logs:/home/admin/redis/logs -v /home/admin/redis/conf:/home/admin/redis/conf -p 6379:6379 --restart unless-stopped -d my_redis:latest
进入Redis容器
docker exec -it my_redis /bin/bash
通过密码进入Redis控制台
redis-cli -h 127.0.0.1 -p 6379 -a 密码
总结一下
- redis.conf 配置文件设置错误导致的
1)比如 daemonize yes 跟 docker run -d 冲突,必须为no;
2)dbfilename 设置时带路径,实际上都在dir目录下
3)还有 log路径,需要 事先有一个空的log文件在那个目录下,启动才不会报错