如何部署Docker Redis?

Docker

1 基础知识

1.1 Redis的简介

Redis是一种开放源代码(BSD许可)的运行于内存中的数据结构存储

1.2 Redis的用途

– Redis可作为数据库
– Redis可作为缓存
– Redis可作为消息代理

1.3 Redis支持的数据结构

– 字符串结构
– 哈希结构
– 列表结构
– 集合结构
– 带范围查询的排序集合结构
– 位图结构
– 超日志结构
– 带半径查询和流的地理空间索引结构

1.4 Redis的功能

– Redis支持内置复制功能
– Redis支持内置Lua脚本功能
– Redis支持内置LRU驱逐功能
– Redis支持内置事务功能
– Redis支持不同级别的磁盘持久性功能

1.5 Redis-cli

1.5.1 Redis-cli的简介

– redis-cli是Redis命令行界面
– redis-cli可直接从终端向Redis发送命令并读取服务器的回复

1.5.2 Redis-cli的主要模式

– 交互模式,键入命令且能获取回复
– 标准输出模式,将命令行作为参数发送
– 特殊模式,接收主服务器的流并模拟从服务器输出该流

2 最佳实践

2.1 部署前的准备

2.1.1 准备Docker环境

如果你尚未部署Docker集群环境,请参阅如下章节部署,

如何部署Docker生产环境?

2.1.2 准备Redis镜像

In docker01

cd /data/docker/images/
docker load -i redis_3.0.3.tar
docker tag redis:3.0.3 docker01.cmdschool.org:5000/redis:3.0.3
docker push docker01.cmdschool.org:5000/redis:3.0.3
docker image rm redis:3.0.3

另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,

docker pull redis:3.0.3
docker save redis:3.0.3 -o redis_3.0.3.tar

另外,其他版本请从以下链接下载,
https://hub.docker.com/_/redis

2.2 部署Redis

In docker01

2.2.1 创建服务配置文件

vim /data/docker/yml/redis-stack.yml

加入如下配置,

version: '3.1'

services:

  redis:
    image: docker01.cmdschool.org:5000/redis:3.0.3
    ports:
      - 6379:6379
    volumes:
      - /data/docker/service/redis/redis.conf:/etc/redis/redis.conf

    command: redis-server /etc/redis/redis.conf
    restart: always
    environment:
      TZ: Asia/Shanghai
    deploy:
      replicas: 1
      placement:
        constraints: [node.labels.redis == true]
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"

根据配置需求创建数据存放目录,
In docker02

mkdir -p /data/docker/service/redis

创建程序所需的配置,

vim /data/docker/service/redis/redis.conf

配置修改如下,

daemonize no
pidfile /var/run/redis/redis.pid
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
requirepass redispasswd
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

需要注意的是,因为Docker要求程序必须以前端运行,所以“daemonize no”是必须的,另外,我们需要根据配置的需求设置运行标记,
In docker01

docker node update --label-add redis=true docker02.cmdschool.org

2.2.2 部署服务

docker stack deploy -c /data/docker/yml/redis-stack.yml redis

2.2.3 配置安全认证

In docker02

docker exec -it `docker container ls | grep redis | cut -d" " -f1 ` bash

登录虚拟机后,请使用如下交互命令使用redis服务,

redis-cli
127.0.0.1:6379> auth redispasswd
OK
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> quit

参阅文档
===================

Docker官方文档
—————-
https://hub.docker.com/_/redis

Redis官方文档
————-
https://redis.io/

Redis支持的指令
————–
https://redis.io/commands

Redis支持的客户端
——————
https://redis.io/clients

Redis的文档
—————–
https://redis.io/documentation

Rediscli的使用
——————
https://redis.io/topics/rediscli

没有评论

发表回复

Docker
如何修复连接Docker容器虚机无响应?

1 前言 一个问题,一篇文章,一出故事。 笔者最近使用如下命令连接容器发现一直没有响应, docke …

Docker
如何打包Docker Nginx?

1 前言 一个问题,一篇文章,一出故事。 由于docker hub原版本的nginx镜像过于精简,于 …

Docker
如何打包Docker MAC-Telnet?

1 基础知识 一款可以使用MikroTik RouterOS MAC-Telnet协议连接Mikro …