Linux 上使用 Docker 下载和运行 Redis
在 Linux 上使用 Docker 下载和运行 Redis 的完整步骤:
步骤 1:安装 Docker
首先确保你的 Linux 系统上已经安装了 Docker。
-
Ubuntu:
sudo apt update sudo apt install docker.io -y sudo systemctl start docker sudo systemctl enable docker
-
CentOS / RHEL:
sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker
-
检查 Docker 是否安装成功:
docker --version
你应该看到类似于以下的输出:
Docker version 24.0.6, build 123abc
步骤 2:拉取 Redis 镜像
使用 Docker 命令从官方仓库拉取 Redis 的镜像:
docker pull redis:5.0.14
下载完成后,你可以运行以下命令确认 Redis 镜像是否成功下载:
docker images | grep redis
输出示例:
redis 5.0.14 1d8b4c9b262e 2 weeks ago 104MB
步骤 3:启动 Redis 容器
使用以下命令在 Docker 中启动 Redis:
docker run -d --name test_redis -p 6379:6379 \
--restart=always \
-v /mnt/middleware/y_redis/data:/data \
-e TZ=Asia/Shanghai \
redis:5.0.14 \
redis-server --requirepass "ddddddd"
命令说明:
-d
:让容器在后台运行。--name test_redis
:指定容器名称为test_redis
。-p 6379:6379
:将宿主机的 6379 端口映射到容器内的 6379 端口。--restart=always
:保证容器在 Docker 重启后自动启动。-v /mnt/middleware/y_redis/data:/data
:将宿主机目录挂载到 Redis 容器的数据目录,实现持久化存储。redis-server --requirepass
:指定 Redis 密码为gGPNdtd32LY03CF
。
步骤 4:验证 Redis 容器状态
-
查看容器是否在运行:
docker ps | grep test_redis
-
如果容器未运行,查看启动日志:
docker logs test_redis
-
进入容器内部,检查 Redis 是否正常:
docker exec -it test_redis redis-cli
-
使用密码认证测试:
auth gGPNdtd32LY03CF ping
成功后会返回:
PONG
步骤 5:测试 Redis 连接
在宿主机上使用 Redis CLI 测试连接:
redis-cli -h 127.0.0.1 -p 6379 -a gGPNdtd32LY03CF ping
如果连接成功,会返回:
PONG
步骤 6:防火墙设置(如有需要)
确保 6379 端口未被防火墙阻挡:
sudo ufw allow 6379/tcp
sudo ufw reload
步骤 7:数据持久化验证
Redis 将数据持久化保存到 /mnt/middleware/y_redis/data
目录中。可以使用以下命令查看该目录内容:
ls /mnt/middleware/y_redis/data
你应该能看到类似 dump.rdb
的文件,这是 Redis 的数据文件。
步骤 8:问题排查
-
端口冲突:
- 检查 6379 端口是否被占用:
sudo netstat -tulnp | grep 6379
- 如果端口被占用,停止占用进程:
sudo kill -9 <PID>
- 检查 6379 端口是否被占用:
-
容器无法启动:
- 查看 Redis 容器日志:
docker logs test_redis
- 查看 Redis 容器日志:
-
数据目录权限问题:
- 如果 Redis 无法写入数据目录,请检查目录权限:
sudo mkdir -p /mnt/middleware/y_redis/data sudo chown -R 1001:1001 /mnt/middleware/y_redis/data
- 如果 Redis 无法写入数据目录,请检查目录权限:
总结
通过以上步骤,你已经在 Linux 上成功下载并运行了 Redis 容器。测试连接时确保使用正确的密码。如果遇到任何问题,请查看日志并检查端口是否被占用。如有进一步问题,请随时告诉我。