ubuntu22上安装redis6
以下是 Ubuntu 22.04 系统通过 Docker 26 安装 Redis 6.2.6 的完整步骤,综合多个可信指南优化整理:
一、准备工作
-
创建持久化目录
mkdir -p ~/redis6/data ~/redis6/conf touch ~/redis6/conf/redis.conf
目录结构:
~/redis6/data
- 数据存储目录
~/redis6/conf/redis.conf
- 配置文件2 -
编辑配置文件
nano ~/redis6/conf/redis.conf
添加核心配置:
requirepass your_password # 设置访问密码 appendonly yes # 启用AOF持久化 bind 0.0.0.0 # 允许远程访问
在
nano
编辑器中退出并保存文件的操作步骤如下:
1. 保存文件
- 按下快捷键
Ctrl + O
(即按住Control
键再按字母O
)。- 底部会提示
File Name to Write: [当前文件名]
,直接按 Enter
确认保存原文件名。
- 若需另存为新文件,输入新名称后再按
Enter
。
2. 退出编辑器
保存后,按下快捷键
Ctrl + X
即可退出nano
。
3. 快捷操作(一步保存并退出)
如果文件已修改且未保存,直接按
Ctrl + X
:
- 若文件有改动,会提示:
Save modified buffer? (Y/N)
- 输入
Y
(保存)→ 按Enter
确认文件名 → 自动退出。- 输入
N
(不保存)→ 直接退出。
二、拉取并启动容器
此时报错 sudo: docker: command not found
出现sudo: docker: command not found
错误表明系统未正确安装Docker或环境变量未配置。以下是完整解决方案:一、安装Docker引擎
卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
安装依赖工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
添加官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Docker CE
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
二、验证安装
检查服务状态
sudo systemctl status docker
正常应显示active (running)状态6。测试基础命令
docker --version
应输出类似 Docker version 24.0.2, build cb74dfc 的版本信息。三、配置用户权限(避免sudo)
将当前用户加入docker组bash
Copy Code
sudo usermod -aG docker $USER
newgrp docker # 立即生效
验证非sudo执行bash
Copy Code
docker ps
应能正常显示容器列表79。四、重新执行Redis部署
docker run -d \
--name redis6 \
-p 6379:6379 \
-v ~/redis6/data:/data \
-v ~/redis6/conf/redis.conf:/etc/redis/redis.conf \
redis:6.2.6 \
redis-server /etc/redis/redis.conf
此时又报错:
ubuntu@VM-8-10-ubuntu:~$ docker run -d \
> --name redis6 \
> -p 6379:6379 \
> -v ~/redis6/data:/data \
> -v ~/redis6/conf/redis.conf:/etc/redis/redis.conf \
> redis:6.2.6 \
> redis-server /etc/redis/redis.conf
Unable to find image 'redis:6.2.6' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.1. 确认错误信息
当你尝试运行Docker容器时,遇到了以下错误:
Unable to find image 'redis:6.2.6' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
这个错误表明Docker无法从Docker Hub(官方镜像仓库)拉取
redis:6.2.6
镜像,因为请求超时了。2. 检查网络连接
首先,确保你的Ubuntu系统可以访问外部网络,特别是Docker Hub。你可以尝试ping Docker Hub的域名来检查网络连接:
ping registry-1.docker.io
如果这个命令失败,说明你的系统无法访问Docker Hub,可能是因为网络设置问题(如防火墙、代理服务器等)。
此时打算换源但是报了下面的错误
解决
docker pull --registry-mirror
未知标志错误在Docker的较新版本中,
--registry-mirror
标志可能已经被移除或不再支持,这取决于你使用的Docker版本。如果你在运行docker pull --registry-mirror=https://mirror.ccs.tencentyun.com redis:6.2.6
命令时遇到了 “unknown flag: --registry-mirror” 错误,这意味着你的Docker版本不支持该标志。解决方案:
步骤 1: 检查Docker版本
首先,检查你当前安装的Docker版本:
docker --version
确保你了解正在使用的Docker版本,因为不同版本的Docker可能有不同的配置选项和支持的功能。
步骤 2: 更新或修改Docker配置
由于
--registry-mirror
标志可能不再支持,你需要通过更新Docker配置来使用镜像加速器。
编辑Docker daemon配置文件:
通常,Docker daemon的配置文件位于
/etc/docker/daemon.json
。如果该文件不存在,你可以创建它。
sudo nano /etc/docker/daemon.json
添加镜像加速器配置:
在配置文件中添加腾讯云的镜像加速器地址。如果文件已经包含其他配置,确保新配置以逗号分隔并符合JSON格式。
{ "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] }
保存并退出编辑器。
重启Docker服务:
为了使配置生效,你需要重启Docker服务。
sudo systemctl restart docker
步骤 3: 重新拉取Redis镜像
一旦Docker服务重启并且配置了镜像加速器,你就可以使用标准的
docker pull
命令来拉取Redis镜像了:
docker pull redis:6.2.6
这次,Docker应该会使用你配置的镜像加速器来加速镜像的下载。
此时再运行Redis容器
拉取成功后,使用原命令启动容器:
docker run -d \ --name redis6 \ -p 6379:6379 \ -v ~/redis6/data:/data \ -v ~/redis6/conf/redis.conf:/etc/redis/redis.conf \ redis:6.2.6 \ redis-server /etc/redis/redis.conf
此时有问题:
ubuntu@VM-8-10-ubuntu:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
没有应用启动
1. 检查容器状态
容器创建后立即退出,需先查看所有容器(包括已停止的):
docker ps -a
若状态为Exited,说明容器启动后立即崩溃。2. 查看容器日志
通过日志定位崩溃原因:
docker logs 0a493d415ed9此时问题是:
ubuntu@VM-8-10-ubuntu:~$ docker logs 0a493d415ed9
*** FATAL CONFIG FILE ERROR (Redis 6.2.6) ***
Reading the configuration file, at line 1
>>> 'requirepass your_password # 设置访问密码'
wrong number of arguments
常见问题包括:Redis配置文件错误(如语法错误或路径问题)4 数据卷权限不足(/data目录不可写)3 端口冲突(6379被占用)
此时我的问题是配置文件出错
1. 错误分析
日志显示Redis配置文件第1行存在语法错误:
requirepass your_password # 设置访问密码
错误提示
wrong number of arguments
表明requirepass
指令参数格式不正确47。2. 修正配置文件
Redis的
requirepass
指令需严格遵循格式:
requirepass "your_password"
或(无空格密码时可省略引号):
requirepass yourpassword
需删除行内注释
# 设置访问密码
或将其移至独立行4。3. 操作步骤
- 编辑配置文件:
nano ~/redis6/conf/redis.conf
- 修正为合法格式:
requirepass "your_password" # 设置访问密码(注释单独成行)
4. 重新启动容器
docker rm -f redis6 # 删除旧容器
docker run -d \ --name redis6 \ -p 6379:6379 \ -v ~/redis6/data:/data \ -v ~/redis6/conf/redis.conf:/etc/redis/redis.conf \ redis:6.2.6 \ redis-server /etc/redis/redis.conf
三、验证安装
-
检查容器状态
sudo docker ps -f name=redis6
输出应包含
Up
状态和端口映射信息 -
命令行测试
sudo docker exec -it redis6 redis-cli
AUTH your_password # 认证密码
-
SET test_key "Hello Docker" GET test_key
预期输出:
"Hello Docker"
27 -
持久化验证
重启容器后数据应保留:sudo docker restart redis6 sudo docker exec -it redis6 redis-cli
AUTH your_password
GET test_key
⚙ 四、配置优化建议
-
内存限制(在
redis.conf
添加)maxmemory 2gb maxmemory-policy allkeys-lru
-
安全加固
echo "rename-command FLUSHDB ''" >> ~/redis6/conf/redis.conf echo "rename-command CONFIG 'SECURE_CONFIG'" >> ~/redis6/conf/redis.conf sudo docker restart redis6
注意事项
- 若需公网访问,需配置云服务器安全组开放 6379 端口
- 生产环境建议:
- 启用 TLS 加密传输
- 使用
--restart=always
确保服务自启27
sudo docker update --restart=always redis6
通过此方案部署的 Redis 服务具备:
数据持久化(AOF模式)
密码认证保护配置文件外置管理
版本精确控制(6.2.6)