Docker 安装 Redis
Docker 安装 Redis
1. 安装 Redis
- 拉取 Redis 镜像:
sudo docker pull redis
[root@~ docker]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete
c7a4e4382001: Pull complete
4044b9ba67c9: Pull complete
c8388a79482f: Pull complete
413c8bb60be2: Pull complete
1abfd3011519: Pull complete
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
- 运行 Redis 容器:
docker run -itd --name redis-test -p 6379:6379 redis --requirepass 123456
- 验证 Redis 容器是否运行:
# 方法一
sudo docker ps
# 方法二
ps aux | grep redis
或
netstat -lntp
你应该能看到一个名为 redis-test
的容器正在运行。
连接到 Redis 容器: 你可以使用以下命令连接到 Redis 容器并进入 Redis 命令行界面:
sudo docker exec -it my-redis redis-cli
进入 Redis 命令行后,你可以使用 Redis 的命令进行操作,例如:
set mykey myvalue get mykey
通过这些步骤,你可以在 Docker 中安装并运行 Redis。
CentOS下redis启动、停止、查看
1、查看redis是否在运行: ps aux | grep redis 或 netstat -lntp
2、启动redis: redis-server /etc/redis.conf
3、关闭redis: /usr/bin/redis-cli shutdown
4、当设置密码后,上面的关闭命令无效:
带密码输入: redis-cli -a [password] 回车后输入:shutdown
即可关闭redis,输入exit 退出。
如果上面都无法关闭,直接使用 kill -9 进程号 来关闭。
5、查看redis密码;可查看 redis 安装根目录下的配置文件:redis-conf 中 SECURITY 下面的 requirepass 后面的内容。
命令行连接 Redis
redis-cli -h 192.168.1.242 -p 6379 -a 645etrdgPKM2q
2. 创建持久化存储、日志、配置文件目录
# 第一步:创建存储目录,日志目录,配置文件目录
mkdir -p /home/redis/{conf,data,log}
# 第二步:创建日志文件
touch /home/redis/log/redis.log
# 第三步:将 redis.conf 文件上传到 /home/redis/conf 目录
# 因为 docker 部署的 redis 并不自带 redis.conf 文件,需要自己下载
# 先切换目录
cd /home/redis/config
# 在线下载
wget http://download.redis.io/redis-stable/redis.conf
# 服务器无网可在有网的电脑上浏览器输入以下地址下载,然后再上传服务器
# http://download.redis.io/redis-stable/redis.conf
第四步:修改 redis.conf 配置文件以下内容
# 让外部设备连接
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 关闭后台运行(避坑提示,因为 docker 运行就已经有后台守护,改为 yes 会启动不了 redis)
daemonize no
# 设置日志文件路径(避坑提示,此路径为容器内的路径,切勿当成宿主路径)
logfile "/etc/redis.log"
# 设置主服务器密码(为以后 redis 集群做基础,无集群需求可以不添加)
masterauth 123456
# 设置 redis 密码(如果以后有哨兵集群需求,主与从的 redis 密码必须一致)
requirepass 123456
docker run -itd --name redis --restart=always -p 6379:6379 -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -v /home/redis/log/redis.log:/var/log/redis/redis.log redis --requirepass 123456
docker run -itd --name redis-test -p 6379:6379 redis --requirepass 123456
docker run -p 6379:6379 --name redis \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/redis/data:/data \
-v /home/redis/log/redis.log:/var/log/redis/redis.log \
-itd redis redis-server /etc/redis/redis.conf
--restart=always
--requirepass 123456
最终版
拉取镜像
[root@~ docker]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete
c7a4e4382001: Pull complete
4044b9ba67c9: Pull complete
c8388a79482f: Pull complete
413c8bb60be2: Pull complete
1abfd3011519: Pull complete
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
设置 Redis 配置文件
# 创建配置文件
mkdir -p /home/docker-volume/redis/conf
# vi /home/docker-volume/redis/conf/redis.conf
bind 0.0.0.0
protected-mode no
daemonize no
# masterauth 123456
requirepass 123456
# logfile "/var/log/redis/redis.log" 注意日志不存在
运行 Redis
# docker 的 Redis 容器中没有日志文件❓日志文件路径找错了。。。。暂时不映射日志文件。
docker run -itd -p 6379:6379 \
--name redis \
-v /home/docker-volume/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker-volume/redis/data:/data \
redis redis-server /etc/redis/redis.conf
查看 Redis 日志
docker logs redis
进入 Redis 容器,连接 Redis
[root@master001 redis]# docker exec -it redis bash
root@3adb113bcc0f:/data# redis-cli
127.0.0.1:6379> info replication
NOAUTH Authentication required.
# 提示没有验证!使用 AUTH <password> 可以验证
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379>
# 完整命令
redis-cli -h <host> -p <port> -a your_password
Redis 集群
一主二从
单机 Redis,每个都作为 master 主节点,
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:2434214f329bc34d01a436a317ef7f94eb9cc0f2
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
master 节点配置文件
# vi /home/docker-volume/redis/conf/redis.conf
appendonly no
bind 0.0.0.0
protected-mode no
daemonize no
masterauth 123456
requirepass 123456
# logfile "/var/log/redis/redis.log" 注意日志不存在
salve 节点配置文件
appendonly no
replicaof 192.168.10.121 6379
replicaof <master_ip> <master_port>
配置完集群后,在 master 节点查看配置信息
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.10.123,port=6379,state=online,offset=266,lag=0
slave1:ip=192.168.10.122,port=6379,state=online,offset=266,lag=0
master_failover_state:no-failover
master_replid:6c1d6127fb71f2dbfdb8b2078a92bd0ddf26972a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:266
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:266
https://developer.aliyun.com/article/1499672?spm=a2c6h.12873639.article-detail.91.24f11076RH5duS&scm=20140722.ID_community@@article@@1499672._.ID_community@@article@@1499672-OR_rec-V_1-RL_community@@article@@1537440