1.拉取Redis
镜像文件
docker pull redis:5.0.9
2.运行容器
-
创建配置文件目录存放
redis.conf
mkdir /home/redis/data #存放redis数据 mkdir /home/reids/conf/redis.conf #存放redis配置文件
-
修改
redis.conf
配置文件,主要配置的如下:bind 127.0.0.1 #注释掉这部分,使redis可以外部访问 daemonize no #用守护线程的方式启动 requirepass 123456 #密码 给redis设置密码 appendonly yes #redis持久化 默认是no tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
-
启动容器
-
方式一
docker run -itd -p 6379:6379 -v /home/redis/conf:/etc/redis/conf -v /home/redis/data:/data --name myredis redis /etc/redis/conf/redis.conf --appendonly yes
-
方式二
docker run -p 6379:6379 -v /root/redis/data:/data -v /root/redis/conf/redis.conf:/etc/redis/config/redis.config --name redis --restart=always -itd redis:5.0.9 --appendonly yes
命令解释说明
-p 6379:6379 端口映射:前表示主机部分 :后表示容器部分。 --name myredis 指定该容器名称,查看和进行操作都比较方便。 -v 挂载目录(是目录不是文件),规则与端口映射相同。 为什么需要挂载目录:docker是个沙箱隔离级别的容器,不能随便访问外部(主机)资源目录,所以需要挂载目录机制。 -d redis 表示后台启动redis redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
查看容器日志
docker logs 73b4d8f3bb95
或docker logs redis
-
3.测试容器
-
进入容器
[root@centos7 ~]# docker exec -it 73b4d8f3bb95 /bin/bash
-
执行客户端命令
redis-cli
。会发现报错,未授权,这是因为我们设置了密码需要输入密码。[root@centos7 ~]# docker exec -it redis /bin/bash root@962b024dded3:/data# redis-cli 127.0.0.1:6379> set name Bruce (error) NOAUTH Authentication required.
-
输入密码并重新测试
[root@centos7 ~]# docker exec -it redis /bin/bash root@962b024dded3:/data# redis-cli 127.0.0.1:6379> set name Bruce (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 # 这是我的密码 OK 127.0.0.1:6379> set name Bruce OK 127.0.0.1:6379> get name "Bruce" 127.0.0.1:6379> exit root@962b024dded3:/data# exit exit [root@centos7 ~]#
4.Java
连接时的报错
io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no password is set --报错处理
报错原因:下载安装的
redis
默认是没有密码的。所以在项目中配置文件中,连接
redis
,配置了密码。就会报错。解决:给
redis
设置密码1、命令窗口,进入到
redis
所在的目录下2、然后输入
redis-cli
回车3、输入
config set requirepass 123456
回车,123456就是密码