Docker部署redis:从零开始Docker部署

为什么用Docker部署Redis

Docker能让你在几分钟内拉起一个隔离的Redis环境,不用管依赖和编译。
尤其适合本地测试、快速搭建开发环境,或者在生产中通过容器编排统一管理。
本文会带你从零跑通一个带密码、能持久化的Redis实例。

准备工作:安装Docker并拉取镜像

先确保你的服务器上已经装好了Docker。
如果你的系统是CentOS 7+或Ubuntu 20.04+,直接用官方一键脚本:

curl -fsSL https://get.docker.com | sudo sh

装完启动Docker并设置开机自启:

sudo systemctl start docker
sudo systemctl enable docker

验证Docker是否正常工作:

docker --version

接着拉取Redis官方镜像(默认拉取最新版,你也可以指定版本号如 redis:7):

docker pull redis

拉取完成后可以用 docker images 看到redis镜像。

快速部署单机Redis(带密码和端口映射)

启动一个最简单的Redis容器,同时设置密码并映射宿主机端口6379到容器6379:

docker run -d \
  --name my-redis \
  -p 6379:6379 \
  redis redis-server --requirepass yourpassword
  • -d 后台运行
  • --name 容器名字,方便管理
  • -p 宿主机端口:容器端口
  • 最后的 redis-server --requirepass yourpassword 是覆盖容器默认启动命令,直接设置密码

如果你的宿主机6379端口已被占用,换成其他端口比如 -p 6380:6379

重要避坑:持久化与配置文件挂载

默认启动的容器没有保存数据,容器删除后数据全丢。
生产环境一定要做持久化。
推荐用官方推荐的挂载宿主机目录到容器 /data,并开启RDB和AOF。

首先创建宿主机数据目录和配置文件:

mkdir -p /data/redis/conf
mkdir -p /data/redis/data

然后写一个自定义的 redis.conf 文件放在 /data/redis/conf/ 下(如果你不需要特别配置也可以用内建配置,但持久化必须挂载data目录):

# 基础配置
port 6379
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""

# 持久化
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

# 密码(建议在命令行传参,避免conf泄露密码)
# requirepass yourpassword

然后用挂载方式启动容器:

docker run -d \
  --name my-redis-persist \
  -p 6379:6379 \
  -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /data/redis/data:/data \
  redis redis-server /usr/local/etc/redis/redis.conf \
  --requirepass yourpassword
  • -v 挂载配置和数据目录
  • 注意配置中的 daemonize no,因为容器内必须前台运行
  • 密码在命令行追加 --requirepass,这样配置文件中可以不写密码,更安全

检验数据持久化:往Redis写一条数据,然后删除容器重建一个新容器(用相同镜像和挂载),看数据是否还在。

验证连接与常见问题解答

验证连接

用宿主机上的 redis-cli(如果没有安装可以用 docker exec 进入容器):

# 进入容器内部
 docker exec -it my-redis-persist redis-cli
# 授权
AUTH yourpassword
# 测试
PING
# 返回 PONG 则正常

也可以远程连接(防火墙放行6379端口后):

redis-cli -h 你的服务器IP -p 6379 -a yourpassword

常见问题与排查

Q1:启动容器后立即退出,docker logs my-redis 显示权限错误?
大概率是挂载的配置文件权限问题。宿主机上的 redis.conf 只需要可读(644即可),不要设置成 777。同时确认目录 --volume 的路径是否正确。

Q2:连接时报 DENIED Redis is running in protected mode
因为没有设置密码且绑定了 127.0.0.1。解决方法:启动时加 --requirepass 密码,并且用 --bind 0.0.0.0 允许外部连接(注意仅限安全环境)。

Q3:AOF文件损坏无法重启?
如果容器异常断电导致AOF文件损坏,可以用 redis-check-aof --fix /data/redis/data/appendonly.aof 修复。修复前建议先备份。

Q4:如何修改密码?
不需要修改配置文件,直接停止容器后,重新执行 docker run 时更换 --requirepass 参数即可。注意旧数据不会丢失,但原客户端需要用新密码连接。

总结

Docker部署Redis的核心步骤就是拉取镜像、配置持久化、设置密码、验证连接。
新手最常踩的坑是忘记挂载数据目录导致重启丢失,以及端口映射冲突或配置文件权限问题。
按本文步骤操作,遇到异常先看 docker logs 输出,大多能定位到原因。
如果你正在处理线上环境,建议再加上资源限制(--memory)和日志轮转等细节。

分享到:
上一篇
Linux服务器系统启动优化,三步让开机加载快起来
下一篇
Linux服务器文件服务器优化指南:Samba提速与稳定配置
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意