Docker 安装 Redis 最全指南:从零开始搭建高可用 Redis 服务

引言

        Redis 是当前最流行的内存数据库之一,广泛应用于缓存、消息队列、会话存储等场景。而 Docker 作为容器化技术的代表,极大简化了应用的部署和管理流程。

        本文将带你使用 Docker 从零开始部署一个生产级的 Redis 服务,支持持久化、配置文件自定义、端口映射和数据卷挂载,确保数据安全与服务稳定。

一、环境准备

1. 确保已安装 Docker

在开始之前,请确保你的 Linux 系统已安装 Docker。可以通过以下命令检查:

docker --version

  如果没有安装可以参考一下,在CentOS7中安装Docker的详细操作:

        CentOS快速安装Docker指南-CSDN博客

二、创建目录结构

为了持久化 Redis 的配置和数据,我们创建本地目录:

mkdir -p /root/redis/conf
mkdir -p /root/redis/data
  • /root/redis/conf:用于存放 redis.conf 配置文件
  • /root/redis/data:用于持久化 RDB/AOF 数据

 三、准备 Redis 配置文件

1. 下载官方 Redis 配置模板

wget -O /root/redis/conf/redis.conf https://raw.githubusercontent.com/redis/redis/6.2/redis.conf

        注意:我们使用的是 Redis 6.2.6 版本,因此下载对应分支的配置文件。

2. 修改关键配置项

编辑 /root/redis/conf/redis.conf

vim /root/redis/conf/redis.conf

修改以下几项:

# 允许远程连接(生产环境建议绑定具体 IP)
bind 0.0.0.0

# 设置密码(强烈建议)
requirepass your_strong_password_here

# 关闭保护模式(允许远程访问)
protected-mode no
#指定 Redis 服务监听端口为 6379(默认值)。
port 6379
#是否以后台守护进程方式运行。Docker 中必须设为 no,因为容器主进程不能是后台进程,否则容器会立即退出。
daemonize no

🔐 安全提示:请将 your_strong_password_here 替换为强密码!

 四、启动 Redis 容器

使用以下 docker run 命令启动 Redis 服务:

docker run --name redis -d \
  -p 6379:6379 \
  -v /root/redis/conf:/etc/redis \
  -v /root/redis/data:/data \
  redis:6.2.6 \
  redis-server /etc/redis/redis.conf

🔍 参数详解

参数说明
--name redis为容器命名,便于管理
-d后台运行容器
-p 6379:6379将主机 6379 端口映射到容器
-v /root/redis/conf:/etc/redis挂载配置文件目录
-v /root/redis/data:/data挂载数据目录,实现持久化
redis:6.2.6使用 Redis 6.2.6 镜像
redis-server /etc/redis/redis.conf指定启动时加载的配置文件

五、验证 Redis 是否正常运行

1. 查看容器状态

docker ps

输出应包含:

CONTAINER ID   IMAGE        COMMAND                  STATUS        PORTS                    NAMES
...          redis:6.2.6  "docker-entrypoint..."   Up 2 minutes  0.0.0.0:6379->6379/tcp   redis

2. 进入容器测试

docker exec -it redis redis-cli

输入密码(如果设置了):

AUTH your_strong_password_here

执行测试命令:

ping
# 返回: PONG

set name "Qwen"
get name
# 返回: "Qwen"

六、常见问题与解决方案

问题原因解决方案
Connection refusedRedis 未启动或端口未映射检查 docker ps 和 -p 参数
NOAUTH Authentication required未认证使用 AUTH password
数据重启后丢失未挂载 /data 目录确保 -v /root/redis/data:/data
无法远程连接bind 或防火墙问题设置 bind 0.0.0.0 并开放 6379 端口

七、总结

通过本文,你已经学会了如何:

  • ✅ 使用 Docker 快速部署 Redis
  • ✅ 挂载配置文件实现自定义设置
  • ✅ 挂载数据目录实现数据持久化
  • ✅ 配置密码认证提升安全性

📚参考资料

  • Redis 官方文档
  • Docker Hub - Redis 镜像
  • Redis 6.2 配置文件
<think>好的,用户想在Linux服务器上用Docker从零开始部署MySQL和Redis,需要提供一个思路。首先,我得确保用户已经安装DockerDocker Compose,因为这是基础。如果还没有安装,可能需要先指导他们如何安装,但用户可能已经具备这个条件,所以先假设环境已经准备好。 接下来,用户可能需要一个结构化的部署方案。使用Docker Compose会简化多容器的管理,所以推荐使用docker-compose.yml文件来定义服务。这样,MySQL和Redis可以同时部署,并且方便配置网络和数据持久化。 对于MySQL,数据持久化是关键。需要创建数据卷来保存数据库文件,避免容器重启后数据丢失。同时,设置root密码和环境变量是必须的,还要考虑字符编码问题,比如utf8mb4,以支持中文等字符。端口映射方面,默认的3306端口可能需要暴露,但用户如果有安全考虑,可能会更改端口。 Redis方面同样需要数据持久化和密码配置。Redis的持久化可以通过配置文件或者命令行参数设置,但在Docker Compose中直接指定密码更简单。端口6379需要映射到宿主机,同样要注意安全性。 网络配置部分,创建一个自定义网络让两个容器互通,这样应用容器可以通过服务名访问数据库,而不是固定IP,增加灵活性。用户可能希望MySQL和Redis在同一个网络下,方便应用连接。 权限和目录准备方面,要提醒用户创建必要的本地目录,并设置正确的权限,避免容器启动时出现权限问题。比如,MySQL的数据目录和Redis的数据目录都需要提前创建,并且赋予适当的权限。 安全措施也是需要考虑的,比如是否开放外部访问。如果只在内部使用,可能不需要暴露端口到公网,或者通过防火墙限制访问IP。用户可能不太清楚这些安全细节,需要给出建议。 验证步骤部分,用户部署完成后需要检查容器状态,通过命令行工具如mysql-client和redis-cli来测试连接,确保服务正常运行。这可能涉及到安装这些客户端工具,如果服务器没有安装,可能需要用户先安装。 维护和备份建议也是用户需要的,比如定期备份数据,更新镜像版本,监控日志等。用户可能没有考虑到长期维护的问题,提前给出建议会更好。 最后,提供一个示例的docker-compose.yml文件,让用户可以直接使用或参考,这样他们能更直观地理解配置结构。同时,提醒他们替换密码和调整配置以适应实际环境,避免直接使用示例中的弱密码。 需要检查是否有遗漏的步骤,比如Docker安装指南是否需要简要说明,或者是否需要提醒用户关于SELinux或AppArmor的问题。不过用户可能已经具备基础,所以保持简洁,重点放在部署步骤上。确保所有步骤清晰,顺序合理,用户能一步步跟随操作。</think>以下是从零部署MySQL和Redis的完整思路指南,采用Docker最佳实践方案: --- ### **部署思路** #### 1. 环境准备 ```bash # 安装Docker(如已安装可跳过) curl -fsSL https://get.docker.com | bash -s docker # 安装Docker Compose(推荐v2版本) sudo curl -L "https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` #### 2. 创建项目结构 ```bash mkdir -p ~/docker-apps/{mysql,redis}/data # 创建持久化数据目录 cd ~/docker-apps ``` #### 3. 编写docker-compose.yml ```yaml version: '3.8' services: mysql: image: mysql:8.0 container_name: mysql8 restart: always environment: MYSQL_ROOT_PASSWORD: your_strong_password MYSQL_DATABASE: app_db TZ: Asia/Shanghai volumes: - ./mysql/data:/var/lib/mysql - ./mysql/conf.d:/etc/mysql/conf.d ports: - "3306:3306" networks: - backend redis: image: redis:7-alpine container_name: redis7 restart: always command: redis-server --requirepass your_redis_password volumes: - ./redis/data:/data ports: - "6379:6379" networks: - backend networks: backend: driver: bridge ``` #### 4. 重要配置说明 **MySQL优化配置**(创建mysql/conf.d/my.cnf): ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci max_connections = 1000 ``` **Redis持久化配置**(通过command参数已启用AOF): ```bash command: redis-server --appendonly yes --requirepass your_redis_password ``` #### 5. 启动服务 ```bash docker-compose up -d # 首次启动 docker-compose logs # 查看启动日志 ``` #### 6. 验证部署 ```bash # 验证MySQL docker exec -it mysql8 mysql -uroot -p SHOW VARIABLES LIKE 'character_set%'; # 验证Redis docker exec -it redis7 redis-cli -a your_redis_password PING # 应返回 PONG ``` #### 7. 安全加固建议 1. 防火墙配置:仅允许信任IP访问3306/6379端口 2. MySQL建议:创建专用应用用户(非root) 3. Redis建议:修改默认端口(在ports配置中修改左侧宿主机端口) #### 8. 常用维护命令 ```bash # 查看运行状态 docker-compose ps # 停止服务 docker-compose down # 备份数据(在宿主机直接打包持久化目录) tar czvf mysql-backup-$(date +%F).tar.gz ./mysql/data/ ``` --- ### **核心优势** 1. **隔离性**:通过独立网络实现服务间安全通信 2. **持久化**:数据目录映射确保容器重启不丢失数据 3. **版本控制**:明确指定镜像版本避免更新冲突 4. **快速恢复**:docker-compose.yml即完整部署文档 实际部署时需替换:`your_strong_password`和`your_redis_password`,建议使用密码管理器生成强密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值