以 Redis-6.0.6 为例,先从仓库将镜像拉下来:
docker pull redis:6.0.6 |
---|
Redis 的配置文件和数据文件不能放在镜像中,这里选择容器中的目录和宿主机上一致,这样更方便管理。以 /data/redis 为 Redis 的主目录,配置文件放在目录 /data/redis/conf,数据文件放在目录 /data/redis/data。
注意,需将容器的网络模式设置为主机(host)模式,而不能是默认的网桥(Bridge)等模式。主机模式下,不有用宿主机和容器间的端口映射(即“-p”参数可省略了)。
这里使用了进程监控脚本工具 process_monitor.sh 来自动拉起 Redis 容器,process_monitor.sh 带两个参数,第一个参数为被监控进程(包含目录)和匹配模式(为其中一个参数),第二个参数为拉起进程命令或脚本。
在启动 Redis 窗口之前,需要创建好各目录和设置好配置文件。建议以公共配置文件 redis.conf 加端口定制配置文件 redis-PORT.conf 相结合方式,可直接基于 redis-6.0.6 源代码包提供的 redis.conf 修改。
- Crontab设置:
PMONITOR=/usr/local/bin/process_monitor.sh
DOCKER=/bin/docker
REDIS_HOME=/data/redis
REDIS_SERVER=/usr/local/bin/redis-server
PORT1=2020
PORT2=2021
PORT3=2022
PORT4=2023
PORT5=2024
PORT6=2025
# PORT1
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT1" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT1 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT1.conf"
# PORT2
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT2" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT2 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT2.conf"
# PORT3
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT3" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT3 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT3.conf"
# PORT4
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT4" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT4 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT4.conf"
# PORT5
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT5" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT5 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT5.conf"
# PORT6
* * * * * $PMONITOR "$REDIS_SERVER 0.0.0.0:$PORT6" "$DOCKER run -d --rm --network=host -u=redis --name=redis-$PORT6 -v $REDIS_HOME:$REDIS_HOME redis:6.0.6 $REDIS_SERVER $REDIS_HOME/conf/redis-$PORT6.conf"