docker安装redis
一、redis是什么?
redis本质上是一个Key-Value类型的内存数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
二、docker部署redis
1.拉取镜像
# 默认会拉取最新版本 相当于redis:latest
docker pull redis
2.查看镜像
# 确保镜像已下载
docker images
3.准备redis的配置文件
# redis中文官方网站:http://www.redis.cn/download.html,下载后将redis.conf解压出来
4.配置redis.conf配置文件
# 修改redis.conf配置文件,主要配置的如下:
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no #用守护线程的方式启动
requirepass 1234 #密码 给redis设置密码
appendonly yes #redis持久化 默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
5.创建本地与docker映射的目录,即本地存放的位置
# 创建本地存放redis的位置:
# xxxx 替换成自定义的路径
mkdir -p /xxxx/redis/conf
mkdir -p /xxxx/redis/data
#把配置文件拷贝到刚才创建好的文件夹里 路径为:/xxxx/redis/conf/redis.conf
6.创建redis容器并启动
docker run -it -d -p 6379:6379 --restart=always --name docker-redis \
-v /xxxx/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /xxxx/redis/data:/data redis redis-server /etc/redis/redis.conf --appendonly yes
# xxxx 替换成上面新建的自定义目录
# redis.conf 为redis的配置文件
# /redis/data 里面存放了rdb和aof文件
# -p 6379:6379 ':'前面为宿主机对外端口号,':'后面为docker容器内redis服务端口号
# --restart=always 设置开机启动
# -v /xxxx/redis//conf/redis.conf:/etc/redis/redis.conf#把宿主机配置好的redis.conf放到容器内的这个位置中
# -v /xxxx/redis/data:/data#把redis持久化的数据在宿主机内显示,做数据备份
# redis-server /etc/redis/redis.conf#这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
# –appendonly yes #redis启动后数据持久化
7.查看是否启动成功
# 查看是否成功启动:
docker ps
# 可以查看一下日志:
docker logs docker-redis
8.进入容器测试 redis
# 进入的时候可以写容器名或者容器ID,docker-redis是我的容器名
docker exec -it redis /bin/bash # 进入redis 容器
redis-cli # 执行客户端命令
127.0.0.1:6379> set test 1 # 存数据测试
OK
127.0.0.1:6379> get test # 取数据测试
"1"
9.以上docker部署redis完成,如果有需要进行一些特殊配置可以到前面咱们设置的挂载目录/xxxx/redis/conf,去修改redis.conf文件,修改之后重启。
三、总结
关于容器自动启动的方式这里简单说一下:
# 1.如果创建时未指定 --restart=always ,可通过update 命令设置
docker update --restart=always xxx
# 2.创建指定 --restart=always 如上redis容器启动
--restart具体参数值详细信息:
no - 容器退出时,不重启容器;
on-failure - 只有在非0状态退出时才从新启动容器;
always - 无论退出状态是如何,都重启容器;