BCLinux容器应用镜像使用手册-Redis
-
BCLinux容器应用镜像使用手册-Redis
什么是Redis
Redis是一个开源的 key-value,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,Redis 支持 master-slave(主-从)模式应用,支持数据的持久化,可以将内存中的数据村春在硬盘中,重启、断电的时候并不会丢失数据。
安装
- 从BCLinux提供的镜像仓库拉取最新的Redis容器镜像:
docker pull bclinux/redis:latest
- 也可以通过
docker build
本地建立Redis镜像:
git clone git@gitlab.cmss.com:linux/bclinux-dockerfiles.git cd bclinux-dockerfiles/redis/bclinux7 docker build -t bclinux/redis:latest .
运行
- Docker
docker run --name redis bclinux/redis:latest
- Docker Compose
version: '2' services: redis: image: 'bclinux/redis:latest' ports: - '6379:6379'
数据持久化
在默认情况下如果删除了容器,所有数据都会丢失,在下次启动同样的容器镜像时,Redis数据库会重新初始化。为了避免数据的丢失,所以需要挂载数据卷的方式保证数据持久化。
本镜像可以通过映射数据卷的方式来保证数据的不丢失,你可以将Redis容器默认数据存储路径
/var/lib/redis
映射至宿主机某个路径:docker run --name redis-master \ -e REDIS=1 \ -e REDIS_PASSWORD=password \ -v /path/to/persistence/:/var/lib/redis/ \ -p 6379:6379 \ bclinux/redis
或者使用Docker Compose方式:
version: '2' services: redis-master: container_name: redis-master restart: always image: bclinux/redis:latest hostname: master ports: - 6379:6379 environment: - REDIS=1 - REDIS_PASSWORD=password volumes: - /path/to/persistence/:/var/lib/redis
使用Docker Compose
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
例如,可以通过本镜像启动一个Slave模式的Redis容器,首先创建Docker Compose配置文件
docker-compose.yml
,内容如下:version: '2' services: redis-slave: container_name: redis-slave restart: always image: bclinux/redis:latest hostname: slave ports: - 6380:6379 environment: - REDIS=1 - SLAVE=1 - SLAVE_MASTER_HOST=<IP> - SLAVE_MASTER_PASSWORD=password
启动容器就可以直接通过如下命令启动:
docker-compose up -d
样例配置
- 设定服务初始密码
可以传递环境变量
REDIS_PASSWORD
的值来设定Redis服务初始密码:docker run --name redis -e REDIS_PASSWORD=password123 bclinux/redis:latest
- 搭建 Replication 集群模式
关于 Replication 集群模式定义可以参考官方文档,在Replication 集群模式中,允许一个主节点及多个从节点,从节点可配置为‘只读’模式。
首先搭建Replication主节点:
# docker run --name redis-master \ -e REDIS=1 \ -e REDIS_PASSWORD=password \ bclinux/redis
接下来搭建Replication从节点:
# docker run --name redis-slave \ --link redis-master:master \ -e REDIS=1 \ -e REDIS_PASSWORD=password \ -e SLAVE=1 \ -e SLAVE_MASTER_HOST=master \ -e SLAVE_MASTER_PORT=6379 \ -e SLAVE_MASTER_PASSWORD=password \ bclinux/redis
使用Docker Compose方式:
version: '2' services: redis-primary: image: 'bclinux/redis' ports: - '6379' environment: - REDIS=1 - REDIS_PASSWORD=password volumes: - '/path/to/persistent:/var/lib/redis' redis-secondary: image: 'bclinux/redis' ports: - '6379' depends_on: - redis-primary environment: - REDIS=1 - REDIS_PASSWORD=password - SLAVE=1 - SLAVE_MASTER_HOST=redis-primary - SLAVE_MASTER_PASSWORD=password
通过
scale
参数可以弹性增加/减少从节点数量,例如下面命令将从节点数量增加到3个,当然也可以用同样的方法减少从节点数量:docker-compose scale redis-primary=1 redis-secondary=3
查看日志
本Redis镜像日志都是重定向到标准输出
stdout
,查看方式如下:[root@workstation ~]# docker logs b66b73e7a15 _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.1 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 1 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' ...
或者使用Docker Compose:
[root@workstation ~]# docker-compose logs redis-primary Attaching to root_redis-primary_1 redis-primary_1 | _._ redis-primary_1 | _.-``__ ''-._ redis-primary_1 | _.-`` `. `_. ''-._ Redis 3.2.1 (00000000/0) 64 bit redis-primary_1 | .-`` .-```. ```\/ _.,_ ''-._ redis-primary_1 | ( ' , .-` | `, ) Running in standalone mode redis-primary_1 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 redis-primary_1 | | `-._ `._ / _.-' | PID: 1 redis-primary_1 | `-._ `-._ `-./ _.-' _.-' redis-primary_1 | |`-._`-._ `-.__.-' _.-'_.-'| redis-primary_1 | | `-._`-._ _.-'_.-' | http://redis.io redis-primary_1 | `-._ `-._`-.__.-'_.-' _.-' redis-primary_1 | |`-._`-._ `-.__.-' _.-'_.-'| redis-primary_1 | | `-._`-._ _.-'_.-' | redis-primary_1 | `-._ `-._`-.__.-'_.-' _.-' redis-primary_1 | `-._ `-.__.-' _.-' redis-primary_1 | `-._ _.-' redis-primary_1 | `-.__.-' redis-primary_1 | redis-primary_1 | 1:M 25 May 09:44:15.471 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. redis-primary_1 | 1:M 25 May 09:44:15.496 # Server started, Redis version 3.2.1 ...
配置说明
- 默认配置参数:
类型 默认值 Redis端口 6379 Sentinel端口 26379 数据路径 /var/lib/redis 日志路径 /var/log/redis Unix Socket /var/run/redis/redis.sock - Redis环境变量:
环境变量 默认值 描述 REDIS 1 / true 开启Redis主服务 REDIS_TIMEOUT 0 断开连接如果客户端在N秒内没有响应 REDIS_KEEPALIVE 300 TCP keepalive REDIS_DATABASES 16 数据库数目 RREDIS_DATA /var/lib/redis 数据默认存储路径 REDIS_PASSWORD - Redis密码 REDIS_MAXCLIENTS 10000 客户端最多连接数 REDIS_MIN_SLAVES_TO_WRITE 1 主节点会在从节点连接数少于N个,延迟低于M秒时拒绝写 REDIS_MIN_SLAVES_MAX_LAG 10 主节点会在从节点连接数少于N个,延迟低于M秒时拒绝写 - Slave环境变量
环境变量 默认值 必要 描述 SLAVE 0 - 标记Redis从节点 SLAVE_MASTER_HOST - 是 Redis主节点IP地址 SLAVE_MASTER_PORT 6379 否 Redis主节点端口 SLAVE_MASTER_PASSWORD - 否 Redis主节点密码