Ubuntu 上使用 Podman 部署 Redis 7.2.15

在 Ubuntu 上使用 Podman 部署 Redis 7.2.15,并通过挂载宿主机的配置文件和 data 目录实现持久化,可以按以下步骤操作。这里以 Rootless Podman(普通用户运行) 为主,因为 Ubuntu 默认推荐这种方式。


一、创建宿主机目录与配置文件

bash
 
 
复制
 
 
下载
# 在家目录下创建工作目录
mkdir -p ~/redis-7.2.15/conf
mkdir -p ~/redis-7.2.15/data

# 创建配置文件
vim ~/redis-7.2.15/conf/redis.conf

redis.conf 最小可用配置示例:

ini
 
 
复制
 
 
下载
# 允许所有网络接口连接(生产环境请按需限制)
bind 0.0.0.0

# 设置访问密码(请替换为强密码)可注释,不用密码
#requirepass YourStrongPassword

# 开启 AOF 持久化
appendonly yes

# 数据目录(容器内路径,与挂载点对应)
dir /data

# 日志输出到标准输出,方便 podman logs 查看
logfile ""

注意:不要设置 daemonize yes,否则容器会立即退出。


二、拉取 Redis 7.2.15 镜像

bash
 
 
复制
 
 
下载
podman pull docker.io/library/redis:7.2.15

三、调整宿主机目录权限(Rootless 关键步骤)

Redis 容器内进程以 UID 999(redis 用户)运行。在 Rootless Podman 下,必须让该 UID 能写入 data 目录。使用 podman unshare 调整属主:

bash
 
 
复制
 
 
下载
podman unshare chown -R 999:999 ~/redis-7.2.15/data

配置文件只需要读权限,通常保持当前用户属主即可(容器内以 UID 999 读取,但挂载时默认可读)。如果遇到权限问题,可改为:

bash
 
 
复制
 
 
下载
chmod 644 ~/redis-7.2.15/conf/redis.conf

Ubuntu 默认使用 AppArmor,不需要 :Z 标签。若系统启用了 SELinux,则挂载时需加 :Z。


四、启动 Redis 容器

bash
 
 
复制
 
 
下载
podman run -d \
  --name redis-7.2.15 \
  -p 6379:6379 \
  -v ~/redis-7.2.15/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro \
  -v ~/redis-7.2.15/data:/data \
  docker.io/library/redis:7.2.15 \
  redis-server /usr/local/etc/redis/redis.conf

参数说明:

  • -p 6379:6379:映射端口。

  • -v .../redis.conf:/usr/local/etc/redis/redis.conf:ro:配置文件只读挂载。

  • -v .../data:/data:数据目录挂载,实现持久化。

  • 最后指定 redis-server 并加载自定义配置文件。


五、验证部署

bash
 
 
复制
 
 
下载
# 查看容器状态
podman ps

# 进入 Redis CLI
podman exec -it redis-7.2.15 redis-cli

# 认证(如果配置了密码)
AUTH YourStrongPassword

# 测试
PING
SET test_key "hello"
GET test_key

验证持久化:重启容器后再次读取 test_key。

bash
 
 
复制
 
 
下载
podman restart redis-7.2.15
podman exec -it redis-7.2.15 redis-cli
AUTH YourStrongPassword
GET test_key   # 应返回 "hello"

六、开机自启(可选)

推荐使用 Quadlet(Podman 4.4+)创建 systemd 用户服务。

  1. 开启 linger:

bash
 
 
复制
 
 
下载
sudo loginctl enable-linger $USER
  1. 创建 Quadlet 文件 ~/.config/containers/systemd/redis.container:

ini
 
 
复制
 
 
下载
[Unit]
Description=Redis 7.2.15 Container
After=network-online.target

[Container]
ContainerName=redis-7.2.15
Image=docker.io/library/redis:7.2.15
PublishPort=6379:6379
Volume=%h/redis-7.2.15/conf/redis.conf:/usr/local/etc/redis/redis.conf:ro
Volume=%h/redis-7.2.15/data:/data
Exec=redis-server /usr/local/etc/redis/redis.conf

[Service]
Restart=always

[Install]
WantedBy=default.target
  1. 重载并启动:

bash
 
 
复制
 
 
下载
systemctl --user daemon-reload
systemctl --user start redis.service
systemctl --user status redis.service

七、注意事项

 
问题解决方案
容器启动后立即退出 检查配置文件中是否误设 daemonize yes,应改为 no 或删除
数据目录无法写入 执行 podman unshare chown -R 999:999 ~/redis-7.2.15/data
连接被拒绝 确认 bind 0.0.0.0,并检查防火墙是否放行 6379
密码认证失败 确认 requirepass 值与 AUTH 输入一致
使用 sudo podman(Rootful) 数据目录属主需改为 999:999,可直接 sudo chown -R 999:999 ~/redis-7.2.15/data

按照以上步骤,即可在 Ubuntu 上通过 Podman 运行 Redis 7.2.15,并将配置与数据都保留在宿主机目录中。

posted on 2026-10-09 05:12  wtsgtc  阅读(6)  评论(0)    收藏  举报