根据宿主机的Redis配置文件启动Docker中的Redis
Posted youngyajun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据宿主机的Redis配置文件启动Docker中的Redis相关的知识,希望对你有一定的参考价值。
虚拟机环境CentOS 7.7
前提:安装好了Docker容器,已经拉取了Redis镜像
1.创建Redis配置文件存目录
[root@localhost ~]# mkdir -p /usr/local/docker/redis/conf
2.创建Redis持久化目录
mkdir -p /usr/local/docker/redis/data
3.下载配置文件并且传输到/usr/local/docker/redis/conf下
redis.conf下载地址1:官网配置文件redis.conf
redis.conf下载地址2:Github的redis.conf
4.编辑配置文件(也可以先编辑好后传输到/usr/local/docker/redis/conf下)
#端口设置 port 6379 #远程访问(注释掉bind 127.0.0.1;改protected-mode yes为protected-mode no) #bind 127.0.0.1 protected-mode no #守护进程方式(非后台模式,daemonize yes会使配置文件方式启动redis失败;如果不是no,docker会一直启动失败,原因是docker本身需要后台运行,而这个配置选项也是以守护进程启动,两者会冲突) daemonize no #redis持久化 appendonly yes
#指定本地数据库存放目录
dir ./
配置文件其他配置参考:redis.conf配置
后面启动容器测试发现,下载的配置文件有一项配置repl-diskless-load disabled读取会报错,在472行附近,把repl-diskless-load disabled注释掉(可能是新出的配置参数,具体看注释说明):
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 472
>>> \'repl-diskless-load disabled\'
Bad directive or wrong number of arguments
5.创建容器,配置文件映射
[root@localhost conf]# docker run -d -p 6379:6379 \\
> -v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \\
> -v /usr/local/docker/redis/data:/data \\
> --privileged=true \\
> --name myredis redis:latest \\
> redis-server /etc/redis/redis.conf \\
> --appendonly yes
或者一行:
docker run -d -p 6379:6379 -v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data --privileged=true --name myredis redis:latest redis-server /etc/redis/redis.conf --appendonly yes
注释:
#docker启动命令
docker run
#后台启动
-d
#宿主机容器端口映射
-p 6379:6379
#配置文件映射,容器启动成功可以通过更改宿主机的配置文件来达到更改容器实际配置文件的目的
-v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf
#挂载持久化文件
-v /usr/local/docker/redis/data:/data
/usr/local/my-redis/data是宿主机中持久化文件的位置
/data/是容器中持久化文件的位置(需要和配置文件中dir属性值一样),
#容器内部使用主机的所有Linux内核功能,docker容器防火墙完全开放
--privileged=true
#运行镜像redis,并且启动后容器名命名为myredis
--name myredis redis:latest
#配置文件方式启动redis
redis-server /usr/local/etc/redis/redis.conf
#持久化
--appendonly yes
6.连接测试
7.进入Docker Redis容器
7.1 查容器ID
[root@localhost conf]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9cac1dfcba0b redis:latest "docker-entrypoint..." 13 minutes ago Up 13 minutes 0.0.0.0:6379->6379/tcp myredis
7.2 执行:docker exec -it 容器id /bin/bash
[root@localhost conf]# docker exec -it 9cac1dfcba0b /bin/bash root@9cac1dfcba0b:/data# ls appendonly.aof dump.rdb root@9cac1dfcba0b:/data# cd /etc/redis/ root@9cac1dfcba0b:/etc/redis# ls redis.conf root@9cac1dfcba0b:/etc/redis#
可以发现aof文件和启动配置文件
7.3 退出 Ctrl + d
如果虚拟机挂起后,再次开启无法访问Redis,可以尝试以下解决方法:
1.vi编辑/etc/sysctl.conf配置文件,在最后添加 net.ipv4.ip_forward = 1 2.CentOS7的话多一步,vi编辑/usr/lib/sysctl.d/50-default.conf增加 net.ipv4.ip_forward = 1 3.重启网络服务 systemctl restart network
以上是关于根据宿主机的Redis配置文件启动Docker中的Redis的主要内容,如果未能解决你的问题,请参考以下文章
Docker教程-6-在Redis主从复制基础上搭建哨兵模式
Docker教程-6-在Redis主从复制基础上搭建哨兵模式