写在前面
首先确保本机已经安装好Docker,可以使用Dockr version
来查看本机安装的docker版本。
本人测试的基本为个人Mac Book,使用本机上的Docker安装Redis 进行一些涉及Redis的程序的开发和调试。
安装过程
安装Redis
通过docker search redis
和docker pull redis
下载redis镜像
# 通过关键词搜索可用的redis镜像
docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8297 [OK]
bitnami/redis Bitnami Redis Docker Image 148 [OK]
sameersbn/redis 80 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0 68
rediscommander/redis-commander Alpine image for redis-commander - Redis man… 41 [OK]
kubeguide/redis-master redis-master with "Hello World!" 31
redislabs/redis Clustered in-memory database engine compatib… 25
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 23
oliver006/redis_exporter Prometheus Exporter for Redis Metrics. Supp… 22
arm32v7/redis Redis is an open source key-value store that… 21
bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 14 [OK]
webhippie/redis Docker images for Redis 12 [OK]
redislabs/redisgraph A graph database module for Redis 11 [OK]
s7anley/redis-sentinel-docker Redis Sentinel 10 [OK]
arm64v8/redis Redis is an open source key-value store that… 9
insready/redis-stat Docker image for the real-time Redis monitor… 9 [OK]
redislabs/redisinsight RedisInsight - The GUI for Redis 7
redislabs/redismod An automated build of redismod - latest Redi… 7 [OK]
centos/redis-32-centos7 Redis in-memory data structure store, used a… 5
circleci/redis CircleCI images for Redis 4 [OK]
clearlinux/redis Redis key-value data structure server with t… 2
runnable/redis-stunnel stunnel to redis provided by linking contain… 1 [OK]
tiredofit/redis Redis Server w/ Zabbix monitoring and S6 Ove… 1 [OK]
wodby/redis Redis container image with orchestration 1 [OK]
xetamus/redis-resource forked redis-resource 0 [OK]
# 下载最新版本的Redis镜像
docker pull redis
新增挂在配置文件夹
因为 redis 默认配置你会发现只能够本地连接,不能进行远程访问,使用 Redis Desktop Manager连接都会报错,因此需要手动挂载 redis 配置文件/
新建data
和conf
两个文件夹,位置随意。例如:
pwd
/Users/louxiujun
mkdir -p docker/redis/conf
mkdir -p docker/redis/data
新增Redis配置文件
cd docker/redis/conf
touch redis.conf
vim redis.conf
内容如下:
#bind 127.0.0.1
protected-mode no
appendonly yes
requirepass 123456
- 将bind 127.0.0.1注释掉,保证可以从远程访问到该Redis,不单单是从本地
- appendonly:开启数据持久化到磁盘,由于开启了磁盘映射,数据最终将落到
/Users/louxiujun/docker/redis/data
目录下 - requirepass:设置访问密码为123456
创建redis容器并启动
docker run --name myredis -p 6379:6379 -v /Users/louxiujun/docker/redis/data:/data -v /Users/louxiujun/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
-
docker run
表示运行的意思 -
--name myredis
表示运行容器的名字叫myredis
-
-p 6379:6379
表示将服务器的6379(冒号前的6379)端口映射到docker的6379(冒号后的6379)端口,这样就可以通过服务器的端口访问到docker容器的端口了 - -d 表示以后台服务的形式运行redis
-
-v /Users/louxiujun/docker/redis/data:/data
表示将服务器上的/Users/louxiujun/docker/redis/data
映射为docker容器上的/data
,这样/data
中产生的数据就可以持久化到本地的目录下了 -
-v /Users/louxiujun/docker/redis/conf/redis.conf:/etc/redis/redis.conf
表示将本地/Users/louxiujun/docker/redis/conf/redis.conf
映射为docker容器上的/etc/redis/redis.conf
,这样再配合指令末尾的redis redis-server /etc/redis/redis.conf
实现让docker容器运行时使用本地配置的Redis配置文件的功能了。 -
redis redis-server /etc/redis/redis.conf
表示运行redis服务器程序,并且指定运行时的配置文件
启动测试
通过docker ps
指令查看启动状态,是否成功.
docker ps -a |grep myredis
4be98db9c9e4 redis "docker-entrypoint.s…" 22 minutes ago Up 22 minutes 0.0.0.0:6379->6379/tcp myredis
可以看到Redis实例容器myredis
的运行状态为“UP 22 minutes”表示容器当前正处于运行中,且已经持续运行了22分钟了。
容器内部连接进行测试
执行docker exec -it myredis redis-cli
命令,进入终端。通过auth password
指令进行密码校验。
docker exec -it myredis redis-cli
127.0.0.1:6379> auth
(error) ERR wrong number of arguments for 'auth' command
127.0.0.1:6379> set a 1
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> get a
"1"
127.0.0.1:6379>
客户端
这里直接提供一个破解版的链接下载安装就可以了:https://pan.baidu.com/s/1tpnvkE9R63U9VVMfw5xodQ 密码:zd7y.
填写name,随意填写,不一定非要为myredis,Address使用默认的127.0.0.1,端口使用默认的6379,Auth处填写校验密码123456。
配置完成之后点击“TestConnection”按钮测试连接,显示如图所示的弹窗则表示连接成功。
可以看到,分库0中有我们先前测试时set的key a,在db0的右上角提供一个一个➕按钮,表示新增一个key,选择key a ,在右侧的面板中提供了“Delete”的删除按钮。
关于Redis Desktop Manager就简单介绍到这里,使用的时候简单摸索一下都会使用的,上手成本比较低,这里点到为止。
附录
这里附录一些常用的docker指令仅供参考。
# 搜索镜像
docker search <image name>
# 拉取镜像
docker pull <image name>
# 查看本地镜像
docker images
# 查看已经创建的容器
docker ps -a
# 查看已经启动的容器
docker ps -s
# 运行一个容器实例
docker run <container name>
# 停止指定容器
docker stop <container tag>
# 删除指定容器
docker rm <container tag>