docker-redis
第一步:环境准备与目录创建
为了防止数据丢失和便于管理配置文件,需要在宿主机上为两个环境创建独立的目录。
将文件存放在 /opt/docker/redis 目录下:
# 创建测试环境目录 (conf 放配置文件, data 放数据)
mkdir -p /opt/docker/redis/test/conf
mkdir -p /opt/docker/redis/test/data
# 创建生产环境目录
mkdir -p /opt/docker/redis/prod/conf
mkdir -p /opt/docker/redis/prod/data
第二步:准备配置文件 (redis.conf)
测试环境:
touch /opt/docker/redis/test/conf/redis.conf
cat > /opt/docker/redis/test/conf/redis.conf << 'EOF'
# 绑定地址
bind 0.0.0.0
# 端口
port 6379
# 密码
requirepass test_xxxx
# 持久化
appendonly yes
appendfilename "appendonly.aof"
# 日志
loglevel notice
# 禁用保护模式
protected-mode no
EOF
线上环境
touch /opt/docker/redis/prod/conf/redis.conf
cat > /opt/docker/redis/prod/conf/redis.conf << 'EOF'
# 绑定地址
bind 0.0.0.0
# 端口
port 6379
# 密码
requirepass prod_xxxx
# 持久化
appendonly yes
appendfilename "appendonly.aof"
# 日志
loglevel notice
# 禁用保护模式
protected-mode no
EOF
第三步:启动容器
拉取最新的redis镜像
- 访问下面github,找到目前最新可用的docker地址
https://github.com/dongyubin/DockerHub
- 执行命令(下面的
docker.1ms.run替换为可用的地址)
# 拉取
docker pull docker.1ms.run/redis:latest
# 重命名
docker tag docker.1ms.run/redis:latest redis:latest
启动两个容器,映射不同的宿主机端口。
- 测试环境: 宿主机端口 6380 -> 容器端口 6379
- 生产环境: 宿主机端口 6379 (默认) -> 容器端口 6379
1. 启动测试环境 (Redis-Test)
docker run -d \
--name redis-test \
--restart always \
-p 6380:6379 \
-v /opt/docker/redis/test/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/docker/redis/test/data:/data \
--privileged=true \
redis:latest \
redis-server /etc/redis/redis.conf
2. 启动生产环境 (Redis-Prod)
docker run -d \
--name redis-prod \
--restart always \
-p 6379:6379 \
-v /opt/docker/redis/prod/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/docker/redis/prod/data:/data \
--privileged=true \
redis:latest \
redis-server /etc/redis/redis.conf
参数解释:
--restart always: 开机自启,或者 Docker 重启后容器自动恢复。-p: 端口映射。-v: 挂载目录。注意 CentOS 8 有 SELinux,如果挂载报错权限不足,可以在目录后加:z(如-v ...:/data:z) 或者加--privileged=true。redis-server /etc/redis/redis.conf: 指定容器启动时加载挂载进去的配置文件。
第四步:检查与验证
查看容器状态:
docker ps应该能看到两个容器
redis-test和redis-prod都在Up状态。连接测试 (使用 docker exec 内部连接):
测试环境:
docker exec -it redis-test redis-cli -p 6379 -a test_xxxx ping # 输出应该是: PONG生产环境 (密码 StrongP@ssw0rd_Prod):
docker exec -it redis-prod redis-cli -p 6379 -a prod_xxxx ping # 输出应该是: PONG
第五步:防火墙设置 (重要)
CentOS 8 默认开启 firewalld。需要放行这两个端口。
# 开放生产环境端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 开放测试环境端口
firewall-cmd --zone=public --add-port=6380/tcp --permanent
# 重载配置生效
firewall-cmd --reload