Public Repository

Last pushed: 2 months ago
Short Description
BCLinux容器应用镜像-Redis
Full Description

BCLinux容器镜像使用手册-Redis

什么是Redis

Redis是一个开源的 key-value,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,Redis 支持 master-slave(主-从)模式应用,支持数据的持久化,可以将内存中的数据存储在硬盘中,重启、断电的时候并不会丢失数据。

安装

  • 从BCLinux提供的镜像仓库拉取最新的Redis容器镜像:
docker pull bclinux2020/redis:latest
  • 也可以通过docker build本地建立Redis镜像:bclinux2020/redis
git clone git@gitlab.cmss.com:linux/bclinux-dockerfiles.git
cd bclinux-dockerfiles/redis/bclinux7
docker build -t bclinux2020/redis:latest .

运行

  • Docker
docker run --name redis bclinux2020/redis:latest
  • Docker Compose
version: '2'

services:
  redis:
    image: 'bclinux2020/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 \
  bclinux2020/redis

或者使用Docker Compose方式:

version: '2'
services:
  redis-master:
    container_name: redis-master
    restart: always
    image: bclinux2020/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: bclinux2020/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 bclinux2020/redis:latest
  • 搭建 Replication 集群模式

关于 Replication 集群模式定义可以参考官方文档,在Replication 集群模式中,允许一个主节点及多个从节点,从节点可配置为‘只读’模式。

首先搭建Replication主节点:

# docker run --name redis-master \
 -e REDIS=1 \
 -e REDIS_PASSWORD=password \
 bclinux2020/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 \
 bclinux2020/redis

使用Docker Compose方式:

version: '2'

services:
 redis-primary:
   image: 'bclinux2020/redis'
   ports:
     - '6379'
   environment:
     - REDIS=1
     - REDIS_PASSWORD=password
   volumes:
     - '/path/to/persistent:/var/lib/redis'

 redis-secondary:
   image: 'bclinux2020/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主节点密码
Docker Pull Command
Owner
bclinux2020

Comments (0)