下面是为您重新部署 Redis 7.2.15 容器生成的一条完整启动命令,包含命名卷、密码认证和挂载自定义配置文件


🧹 第一步:清理旧容器(可选)

由于您已有一个同名容器(funny_mcnulty)占用端口,需要先停止并删除它(或者使用新端口,但不推荐):

 
# 停止并删除旧容器(数据卷仍会保留)
podman stop funny_mcnulty
podman rm funny_mcnulty

📄 第二步:创建自定义配置文件

在宿主机上创建一个目录和配置文件,例如 /root/redis-conf/redis.conf

 

mkdir -p /root/redis-conf
cat > /root/redis-conf/redis.conf << 'EOF'
# 网络配置
bind 0.0.0.0
port 6379

# 密码认证(请替换为强密码)
requirepass YourStrongPassword123!

# 内存策略(根据实际内存调整)
maxmemory 256mb
maxmemory-policy allkeys-lru

# 持久化:开启 AOF 和 RDB
appendonly yes
appendfsync everysec
save 900 1
save 300 10
save 60 10000

# 日志级别(生产环境可设为 notice)
loglevel notice

# 其他常用优化
tcp-backlog 511
timeout 0
tcp-keepalive 300
EOF

注意:请将 YourStrongPassword123! 替换为您的真实强密码。


🚀 第三步:使用命名卷和自定义配置启动新容器

以下命令会:

  • 使用命名卷 redis-data 持久化数据

  • 挂载自定义配置文件到容器内 /usr/local/etc/redis/redis.conf

  • 暴露端口 6379

  • 以守护进程模式运行

podman run -d \
  --name redis \
  -p 6379:6379 \
  -v redis-data:/data:Z \
  -v /root/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf:Z \
  docker.io/library/redis:7.2.15 \
  redis-server /usr/local/etc/redis/redis.conf

参数说明

  • --name redis:给容器赋予一个有意义的名称。

  • -v redis-data:/data:Z:创建并使用名为 redis-data 的命名卷,挂载到容器的 /data,用于持久化 RDB/AOF 文件。:Z 是 SELinux 标签,确保容器有权访问。

  • -v /root/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf:Z:挂载自定义配置文件,覆盖默认配置。

  • redis-server /usr/local/etc/redis/redis.conf:显式指定使用挂载的配置文件启动。


✅ 第四步:验证部署

  1. 检查容器状态

    podman ps | grep redis
  2. 测试密码连接

    podman exec -it redis redis-cli -a YourStrongPassword123! PING

    应返回 PONG

  3. 验证持久化

    # 写入测试键
    podman exec -it redis redis-cli -a YourStrongPassword123! SET testkey "hello"
    # 重启容器
    podman restart redis
    # 再次读取
    podman exec -it redis redis-cli -a YourStrongPassword123! GET testkey

    应返回 "hello"

  4. 验证配置生效

    podman exec -it redis redis-cli -a YourStrongPassword123! CONFIG GET maxmemory

    应返回 "256mb"


🔒 关于 rootless(非 root 用户)运行

如果您希望以普通用户身份运行(更安全),可以执行以下命令(无需 sudo,且存储路径在 ~/.local/share/containers):

podman run -d \
  --name redis \
  -p 6379:6379 \
  -v redis-data:/data \
  -v /home/youruser/redis-conf/redis.conf:/usr/local/etc/redis/redis.conf \
  docker.io/library/redis:7.2.15 \
  redis-server /usr/local/etc/redis/redis.conf

注意:rootless 模式下 :Z 通常不需要(除非使用 SELinux 且配置了相关策略),端口映射需使用高于 1024 的端口(或通过 rootless 端口转发),但 6379 仍可用。


💡 额外建议

  • 密码安全:不要将密码明文写在命令历史中,建议使用环境变量文件或 podman secret(若支持)。

  • 资源限制:如需限制容器内存,可添加 --memory=512m 等参数。

  • 日志:通过 podman logs redis 查看运行日志。

posted on 2026-08-11 21:27  wtsgtc  阅读(19)  评论(0)    收藏  举报