1.拉取Redis镜像文件
docker pull redis:latest
2.运行容器
查看本地镜像文件docker images
[root@zero redis] docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEredis latest 7614ae9453d1 9 days ago113MBmysql 5.7 c20987f18b13 10 days ago 448MBhello-world latest feb5d9fea6a5 3 months ago 13.3kB
创建配置文件目录存放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持久化默认是notcp-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
命令解释说明:
-p 6379:6379 端口映射:前表示主机部分 :后表示容器部分。--name myredis 指定该容器名称,查看和进行操作都比较方便。-v 挂载目录(是目录不是文件),规则与端口映射相同。为什么需要挂载目录:docker是个沙箱隔离级别的容器,不能随便访问外部(主机)资源目录,所以需要挂载目录机制。-d redis 表示后台启动redisredis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
查看正在运行的容器
[root@zero conf] docker ps CONTAINER ID IMAGE COMMAND CREATED STATUSPORTSNAMES73b4d8f3bb95 redis "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp myredis7eedeb6049c2 mysql:5.7 "docker-entrypoint.s…" 4 days agoUp 24 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql01
查看容器日志docker logs 73b4d8f3bb95
可以看到Redis服务中已经开启了append only模式,数据被持久化存储到磁盘上。
在云服务器安全组配置中打开6379端口
3.测试容器
进入容器[root@zero redis] docker exec -it 73b4d8f3bb95 /bin/bash
执行客户端命令redis-cli
会发现报错,未授权,这是因为我们设置了密码需要输入密码
root@73b4d8f3bb95:/data redis-cli127.0.0.1:6379> set hello 1 (error) NOAUTH Authentication required.
输入密码并重新测试
127.0.0.1:6379> auth 123456 #密码,这是我的密码OK127.0.0.1:6379> set hello worldOK127.0.0.1:6379> get hello"world"127.0.0.1:6379> exit
4.本地连接服务端Redis
本地下载Redis可视化管理工具RDM输入服务器公网ip地址以及密码连接测试连接
服务器的Redis客户端输入key值test
root@2717071e4b04:/data redis-cli127.0.0.1:6379> set test helloOK
本地RDM看到新增键值 test