news 2026/4/15 8:42:53

Docker 安装 Redis

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 安装 Redis

Docker 安装 Redis 是开发/生产环境中最常用的方式,核心是在线拉取镜像 + 自定义配置 + 数据持久化(避免容器销毁丢失数据)。以下是完整的在线安装步骤(适配 Linux/macOS,Windows 仅需微调路径),兼顾开发和生产级配置。

一、前提条件

已安装 Docker 环境(验证:docker --version输出版本号),若未安装,执行以下命令(以 CentOS 为例):

# 一键安装 Docker(国内源)curl-fsSL https://get.docker.com|bash-s docker --mirror Aliyun# 启动 Docker 并设置开机自启systemctl start docker&&systemctlenabledocker

二、步骤 1:拉取 Redis 镜像(推荐指定版本)

避免使用latest标签(易踩版本兼容坑),推荐拉取稳定版(如 7.2、6.2):

# 拉取 Redis 7.2 稳定版(可替换为 6.2、7.0 等)docker pull redis:7.2# 验证镜像是否拉取成功docker images|grepredis# 输出示例:redis 7.2 xxxxxxxx 2 hours ago 130MB

三、步骤 2:准备持久化目录和自定义配置(关键)

Redis 默认数据存储在容器内部,容器删除后数据丢失,需挂载宿主机目录实现持久化,同时自定义配置(如密码、访问权限)。

1. 创建宿主机目录(数据、配置、日志)
# 创建目录(建议统一放在 /data/redis 下)mkdir-p /data/redis/{conf,data,logs}# 赋予读写权限(避免容器无权限操作)chmod777-R /data/redis
2. 编写自定义 redis.conf 配置文件

核心配置需覆盖访问权限、密码、持久化、内存限制,避免默认配置的安全风险:

# 写入配置文件到 /data/redis/conf/redis.confcat>/data/redis/conf/redis.conf<<EOF # 允许所有IP访问(生产环境可改为内网IP,如 192.168.1.0/24) bind 0.0.0.0 # 关闭保护模式(否则仅本地能访问) protected-mode no # 端口(默认6379,可自定义) port 6379 # 设置Redis密码(必填,避免未授权访问) requirepass 123456 # 持久化:开启AOF(追加日志,比RDB更安全) appendonly yes appendfsync everysec # 每秒刷盘一次(平衡性能和数据安全) # 持久化:RDB快照(兜底,每5分钟/至少1个修改触发快照) save 300 1 # 数据存储目录(容器内路径,需和挂载目录对应) dir /data # 日志文件路径 logfile /logs/redis.log # 内存限制(按需设置,如 1GB,避免占满服务器内存) maxmemory 1gb # 内存淘汰策略(内存满时删除最少使用的Key) maxmemory-policy allkeys-lru # 容器内无需后台运行(由Docker -d参数接管) daemonize no EOF

四、步骤 3:启动 Redis 容器(生产级参数)

执行以下命令启动容器,每个参数都有明确作用,建议保留核心参数:

docker run -d\--name redis\# 容器名称(自定义,如 redis-7.2)--restart=always\# 开机自启 + 容器异常时自动重启-p6379:6379\# 端口映射:宿主机6379 → 容器6379-v /data/redis/conf/redis.conf:/etc/redis/redis.conf\# 挂载自定义配置-v /data/redis/data:/data\# 挂载数据目录(持久化核心)-v /data/redis/logs:/logs\# 挂载日志目录--privileged=true\# 赋予容器特权(解决目录权限问题)redis:7.2\# 使用的镜像版本redis-server /etc/redis/redis.conf# 指定配置文件启动(覆盖默认配置)

五、步骤 4:验证 Redis 运行状态

1. 检查容器是否启动
dockerps|grepredis# 输出示例:xxxx redis:7.2 redis-server /etc/redis/redis.conf Up 5 minutes# 若未启动,执行 docker logs redis 查看错误日志
2. 测试 Redis 连接和操作
# 进入Redis容器的命令行客户端dockerexec-it redis redis-cli# 输入密码认证(配置的 123456)127.0.0.1:6379>AUTH123456OK# 测试基本操作127.0.0.1:6379>SETtest"docker-redis"# 设置Key-ValueOK127.0.0.1:6379>GETtest# 获取Value"docker-redis"127.0.0.1:6379>KEYS *# 查看所有Key1)"test"# 验证持久化:停止并重启容器,数据仍存在docker stop redis&&docker start redis dockerexec-it redis redis-cli AUTH123456&&GETtest# 输出 "docker-redis" 说明持久化成功

六、常用操作(运维必备)

# 1. 进入Redis容器(执行Linux命令)dockerexec-it redis /bin/bash# 2. 查看Redis实时日志docker logs -f redis# 或直接查看宿主机日志文件cat/data/redis/logs/redis.log# 3. 重启/停止/删除容器docker restart redis# 重启docker stop redis# 停止dockerrm-f redis# 强制删除(需先停止)# 4. 升级Redis版本(不丢数据)# ① 停止旧容器 → ② 拉取新版本镜像 → ③ 用相同挂载目录启动新容器docker stop redis&&dockerrmredis docker pull redis:7.4 docker run -d --name redis --restart=always -p6379:6379 -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -v /data/redis/logs:/logs redis:7.4 redis-server /etc/redis/redis.conf# 5. 备份Redis数据(持久化目录打包)tar-zcvf redis-data-backup.tar.gz /data/redis/data

七、常见问题排查

1. 容器启动失败(docker ps 无输出)
  • 查看日志:docker logs redis,常见原因:
    • 配置文件语法错误:检查redis.conf格式(如少分号、空格);
    • 端口被占用:netstat -tulpn | grep 6379,杀掉占用进程或修改映射端口(如-p 6380:6379);
    • 目录权限不足:重新执行chmod 777 -R /data/redis
2. 外部无法访问Redis(如Spring Boot连接失败)
  • 检查防火墙:放行6379端口(CentOS):
    firewall-cmd --add-port=6379/tcp --permanent&&firewall-cmd --reload
  • 检查云服务器安全组:若为云服务器(阿里云/腾讯云),需在控制台放行6379端口;
  • 检查配置:确认redis.confbind 0.0.0.0protected-mode no
3. 数据持久化失效
  • 确认挂载目录对应:容器内dir /data需对应宿主机-v /data/redis/data:/data
  • 查看AOF/RDB文件是否生成:ls /data/redis/data,应有appendonly.aof(AOF文件)、dump.rdb(RDB文件);
  • 检查容器日志:docker logs redis | grep "appendonly",确认AOF开启成功。
4. Redis内存占用过高
  • 调整redis.conf中的maxmemory(如改为 512mb),重启容器;
  • 执行docker exec -it redis redis-cli AUTH 123456 && CONFIG SET maxmemory 536870912(临时生效,重启后需改配置文件);
  • 清理无用Key:docker exec -it redis redis-cli AUTH 123456 && FLUSHDB(清空当前库)。

八、生产环境优化建议

  1. 禁用公网访问:将bind 0.0.0.0改为内网IP(如192.168.1.100),仅允许应用服务器访问;
  2. 加强密码复杂度:使用随机复杂密码(如P8@k9s7L2#),避免弱密码;
  3. 限制容器资源:启动时添加--memory=2g --cpus=1,限制Redis使用的内存和CPU;
  4. 开启Redis集群:若需高可用,使用docker-compose部署Redis主从/哨兵集群;
  5. 定期备份:定时打包/data/redis/data目录,防止数据丢失。

总结

Docker 安装 Redis 的核心流程:
拉取指定版本镜像 → 准备持久化目录 + 自定义配置 → 挂载目录启动容器 → 验证连接和持久化
重点关注:密码配置、持久化挂载、访问权限,这三点能解决90%的生产环境问题。该方案适配开发、测试、生产全场景,可直接复用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 16:11:27

FFT 工程关键点总结(采样分辨率 / 频点 / 相位)

本文只讨论 FFT 在嵌入式与工程中的实际含义&#xff0c;不涉及数学推导。一、采样分辨率是什么&#xff1f; 1. 先定义所有变量&#xff08;很重要&#xff09;符号含义fs采样率&#xff08;Hz&#xff09;&#xff0c;每秒采样多少次NFFT 点数&#xff08;一次参与 FFT 的采样…

作者头像 李华
网站建设 2026/4/3 1:34:42

【干货收藏】大模型Agent开发完全指南:12个核心原则详解

文章介绍了Agent开发的12个核心原则&#xff0c;强调Agent不同于传统软件&#xff0c;通过目标和规则实现实时决策。重点在于提示词和上下文工程&#xff0c;开发者需掌控提示词和上下文窗口&#xff0c;避免过度封装的AI框架。应构建小型专注的Agent&#xff0c;将其设计为无状…

作者头像 李华
网站建设 2026/4/14 16:05:52

QObject::startTimer: Timers can only be used with threads started with QThread

这个错误是Qt框架中常见的线程管理问题&#xff0c;核心原因在于定时器&#xff08;Timer&#xff09;必须在Qt的事件循环中运行&#xff0c;而事件循环仅存在于通过QThread启动并调用exec()的线程中。以下是详细分析和解决方案&#xff1a;错误原因线程未启动事件循环Qt的定时…

作者头像 李华
网站建设 2026/4/10 8:07:48

Kotaemon能否支持语音转文字后进行检索?

Kotaemon能否支持语音转文字后进行检索&#xff1f; 在智能客服、企业知识助手和无障碍交互系统日益普及的今天&#xff0c;用户不再满足于“打字提问、点击获取答案”的传统模式。越来越多的场景要求系统能够“听懂我说什么&#xff0c;立刻告诉我该怎么做”——比如驾驶员在行…

作者头像 李华