首页 > 数据库 >[redis] 基于Docker安装Redis

[redis] 基于Docker安装Redis

时间:2024-03-17 11:44:38浏览次数:17  
标签:-- redis Redis conf Docker data docker

0 序

  • 环境信息
  • OS : CENTOS 7.9
  • Docker : 25.0.4
  • Redis : 7.2.4

7.2.4 版本比较新, 也可尝试 6.0.8 等版本

1 安装步骤

Step0 安装 docker

略。可参见:

Step1 下载镜像

docker search redis

docker pull redis:7.2.4

https://hub-stage.docker.com/_/redis/tags?page=2

docker images

Step2 基于宿主机,创建配置文件、存储目录

  • 创建数据配置与存储目录
mkdir -p /data/redis

ls -la /data
  • 下载redis配置文件

http://download.redis.io/redis-stable

cd /data/redis

wget http://download.redis.io/redis-stable/redis.conf

ls -la /data/redis


  • 修改REDIS配置文件的配置项(redis.conf)

vi /data/redis/redis.conf

# bind 127.0.0.1 # 注释掉这部分,这是限制redis只能本地访问
# bind 127.0.0.1 -::1

protected-mode yes # 默认 yes,开启保护模式,限制为本地访问

daemonize no # 默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
# daemonize no # 【强制建议】 将 daemonize yes 注释起来或 daemonize no设置,因为该配置和docker run中 -d 参数冲突,会导致容器一直启动失败

databases 16 # 数据库个数(可选)

dir  ./ # 输入本地redis数据库存放文件夹,默认即 ./(可选)

appendonly yes # redis持久化,默认:no(可选)

logfile "redis.log" # 日志文件,默认 ""。 "redis.log" 对应的物理存储目录: /data/redis/data/redis.log | Specify the log file name. Also the empty string can be used to force . Redis to log on the standard output. Note that if you use standard output for logging but daemonize, logs will be sent to /dev/null

requirepass 123456 # 设置成你自己的密码。默认配置如下:
# requirepass foobared
  • protected-mode 是在没有显示定义 bind 地址(即监听全网段),又没有设置密码 requirepass 时,protected-mode 只允许本地回环 127.0.0.1 访问。 也就是说当开启了 protected-mode 时,如果你既没有显示的定义了 bind 监听的地址,同时又没有设置 auth 密码。那你只能通过 127.0.0.1 来访问 redis 服务。
  • 配置OS系统内核参数配置(sysctl.conf)

为避免创建redis容器失败,在/data/redis/data/redis.log中报错"WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run
the command 'sysctl vm.overcommit_memory=1' for this to take effect."(必须启用内存复用!没有它,在内存不足的情况下,后台保存或复制可能会失败。如果被禁用,它也可能导致故障,但不会造成低内存条件,请参阅https://github.com/jemalloc/jemalloc/issues/1328。要解决此问题,请添加“vm.overcommit_memory = 1'到/etc/sysctl.conf,然后重新启动或运行 sysctl vm.overcommit_memory = 1 才能生效。)
https://github.com/jemalloc/jemalloc/issues/1328

centos 7.9 默认 vm.overcommit_memory0

# 永久修改 (需重启)
echo " " >> /etc/sysctl.conf
echo "# fix for redis : https://github.com/jemalloc/jemalloc/issues/1328" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

# 临修改 (无需重启)
sysctl -w vm.overcommit_memory=1

# 查看修改效果
sysctl -a | grep -i vm.overcommit_memory

Step2 创建、启动镜像

docker run \
--restart always \
-p 16379:6379 --name redis \
--privileged=true \
-v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data:rw \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
  • -p 16379:6379 : 第1个 16379 端口:是指宿主机的映射端口 ; 第2个 6379 端口:是指容器的被映射端口
  • -d redis : 后台启动redis
  • redis-server /etc/redis/redis.conf : 以配置文件启动redis,加载容器内的conf文件。docker 镜像 redis 默认 无配置文件启动。
  • --appendonly yes : 开启 redis 持久化
  • --requirepass "123456" : 设置认证密码 【此处没选择这种方式】

Step3 查看运行状态

  • 查看进程运行状态
# 查看活跃的容器
docker ps

# 如果没有 redis 说明启动失败 查看错误日志
docker logs redis
或 tailf /data/redis/data/redis.log

# 查看 redis 的端口映射
docker port redis

# 查看 redis 的 ip 挂载 端口映射等信息
docker inspect redis

docker inspect redis

  • 查看数据目录
ls -la /data/redis/data/

Step4 测验:访问/使用 redis

# 基于 redis-cli 访问
docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379
> AUTH {密码}
或
docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379 -a {密码}
  • -it 交互的虚拟终端
  • --rm 退出是删除此容器


或使用 shell 登录容器内操作

docker exec -it redis bash
> redis-cli

Step5 扩展/可选:主从配置

注:本步骤,未亲测

  • 新建一个redis-slave容器(同新建redis)
docker run \
--restart always \
-p 16380:6380 --name redis-salve \
--privileged=true \
-v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data:rw \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes

查看 redis master 的内部IP : (下图来源于网友)

修改 redis-slave 的配置文件
# 主地址
replicaof 172.17.0.2 6379

# 主认证
masterauth hubocheng
  • 重启redis-slave
docker restart redis-slave
  • 登录 redis master 使用 info 命令查看从机的状态

如果配置不成功记得检查 redis master 的 bind 和 protected-mode 的设置,看下有没有监听内网地址,否则 redis-slave 没办法通过 redis master 的地址做数据同步

  • 登陆redis master后使用info,显示主从关联成功

2 卸载步骤

docker rm -f redis
docker ps -a | grep -i redi

X 参考与推荐文献

  • redis 官方
  • redis 系列教程
  • 其他

标签:--,redis,Redis,conf,Docker,data,docker
From: https://www.cnblogs.com/johnnyzen/p/18078256

相关文章

  • Docker下搭建ewomail邮件服务器
    EwoMail开源企业邮件系统的docker镜像https://hub.docker.com/r/bestwu/ewomail/注意:mail.ewomail.com换成自己的域名可配置参数https://blog.csdn.net/inthat/article/details/103741662 EwoMail开源企业邮件系统的docker镜像https://hub.docker.com/r/bestwu/ewoma......
  • docker-compose部署Minio
    minio部署以及picGo图床设置docker-compose.yml如下version:"3.7"services:minio:image:"minio/minio"ports:-"9000:9000"-"9001:9001"volumes:-"./minio/data1:/data1"-&qu......
  • 【转载】Redis -- IO多路复用及redis6的多线程
    都知道redis是通过单线程+io多路复用来避免并发问题的,然后在redis6的时候redis引入了多线程,这里就来详细说说IO多路复用模型以及redis的多线程。Redis的I/O多路复用模型有效的解决单线程的服务端,使用不阻塞方式处理多个client端请求问题。在看I/O多路复用知识之前,我们先来......
  • Linux各大发行版安装Docker
    在当今的数字化时代,Docker作为一种强大的容器技术,已经成为了开发、部署和管理应用程序的重要工具。无论是Ubuntu、CentOS还是Debian系统,掌握Docker的安装和使用方法都具有重要的现实意义。本文将详细介绍如何在这三个系统上安装Docker,并提供具体的步骤和示例,希望能为读者......
  • Redis(持续更新)
    1、安装安装太麻烦了直接使用宝塔的一键部署密码是bt_redis2、jedis1、引入依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency&g......
  • Docker与containerd:容器技术的双璧
    ......
  • <爬虫部署,进阶Docker>----第二章 安装Docker
    前言:安装docker---本章是只针对windows的Docker! 如果你需要你就往下看,不需要就换频道~正文:1.安装Docker前配置a.开启虚拟化功能(VT)  -如果你电脑有这个(虚拟化已启用)        直接跳过这一步;如果没有,那你就去对照自己电脑开启虚拟化; 相关链......
  • 5 分钟小工具:使用 dive 分析 docker 镜像
    需求拿到一个镜像之后,我想知道:分层查看镜像里都有哪些文件各层使用了什么命令构建的这个镜像镜像里比较大的文件有哪些(可能需要优化)dive工具介绍dive工具可以做这些分析。dive的github地址是 wagoodman/dive,小巧玲珑,MIT开源协议,42.9k的star。它的介绍是这么一......
  • vscode连接远程服务器docker容器进行开发
    1.docker启动暴露端口dockerrun-idt-p<服务器端口>:<docker端口,一般为22>--name<containername><imagename>例如:dockerrun-idt-p10086:22--namemyDockerdockerImage2.docker设置root密码sudosupasswd设置自己的root密码3.docker安装openssh设置......
  • docker搭建harbor私有仓库
    1部署harbor镜像仓库#下载地址https://github.com/goharbor/harbor/tags#以2.3.3版本为例https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz2安装docker-composedocker-compose的安装与部署3解压文件tar-zxvf......