下面是为您重新部署 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:显式指定使用挂载的配置文件启动。
✅ 第四步:验证部署
-
检查容器状态:
podman ps | grep redis -
测试密码连接:
podman exec -it redis redis-cli -a YourStrongPassword123! PING应返回
PONG。 -
验证持久化:
# 写入测试键 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"。 -
验证配置生效:
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查看运行日志。
浙公网安备 33010602011771号