美文网首页
Docker实用-安装redis

Docker实用-安装redis

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2023-05-22 23:08 被阅读0次

    redis使用,基本上都是自己修改好配置文件再启动。redis5以后,docker中都找不到配置文件了(容器内部会自己启动),所以我们再启动容器的时候 需要 自己指定配置文件,然后启动redis。

    1. 单机版redis容器

    1.1 准备redis配置文件
    用docker拉取好redis以后,查看镜像信息,能看到版本号:

    redis 版本
    从redis官网下载对应的版本,拿出其中的配置文件。
    配置文件中,可以根据需求配置:
    • 1.1 注释掉bind的ip:# 127.0.0.1
    • 1.2 关闭保护模式,使能远程访问:protected-mode no
    • 1.3 修改端口:port 6379
    • 1.4 后台守护进程关闭着(因为docker有-d命令,这个就不要开启了,否则容器启动错误,不要开启,不要开启): daemonize no
    • 1.5 修改pid文件: pidfile /var/run/redis_6379.pid
    • 1.6 修改数据库文件:dbfilename dump_6379.rdb
    • 1.7 开启AOF持久化:appendonly yes
    • 1.8 修改数据库目录(rdb和aof都在这个目录,默认是在/data/文件夹下,不用动):dir ./
    • 1.9 放开密码注释,添加密码:requirepass redis123
      注意:数据库持久化默认机制如下,搜索save可以修改
      After 3600 seconds (an hour) if at least 1 key changed
      After 300 seconds (5 minutes) if at least 100 keys changed
      After 60 seconds if at least 10000 keys changed
      
      最后将redis配置文件上传到此目录:
      sudo mkdir /home/soft/redis/conf
      

    1.2 启动容器

    sudo docker run -d --restart=always \
    --name redis \
    -p 6379:6379 \
    --privileged=true \
    -v /home/soft/redis/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/soft/redis/data:/data \
    redis \
    redis-server /etc/redis/redis.conf
    

    或者用host模式,不做端口映射:

    sudo docker run -d --restart=always \
    --name redis \
    --net host \
    --privileged=true \
    -v /home/soft/redis/conf/redis.conf:/etc/redis/redis.conf \
    -v /home/soft/redis/data:/data \
    redis \
    redis-server /etc/redis/redis.conf
    

    2. redis-cluster集群

    redis-clus集群主要是启动后,进行命令操作集群的,这里制作容器编排,具体配置查看:

    Redis集群模式2-RedisCluster模式
    Redis集群模式1-主从复制+哨兵机制

    2.1 配置文件
    暂定6台容器,3主3从的cluster模式,需要6份配置文件,目录分别为:/home/soft/redis-cluster/{6380、6381、6382、6383、6384、6385}/conf/

    cluster dir

    配置文件除了单机版修改的以外,还需要开启集群:

    cluster-enabled yes # 启动集群模式(去掉注释)
    cluster-config-file nodes-6381.conf # 集群节点信息文件
    cluster-node-timeout 10000
    masterauth "redis123" # 添加密码,没有可以不设置,要是有,所有节点密码要一致
    

    2.2 docker-compose.yml文件
    端口映射麻烦,直接用的host模式,也可以用bridge模式,创建网络并指定ip。

    cd /home/soft/redis-cluster
    sudo vim redis-cluster.yml
    

    写入以下配置:

    version: '3.9'
    services:
      # redis6380配置
      redis6380:
        image: redis
        hostname: redis6380
        container_name: redis6380
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6380/conf/redis6380.conf:/etc/redis/redis6380.conf
          - /home/soft/redis-cluster/6380/data:/data
        command: ["redis-server", "/etc/redis/redis6380.conf"]
      # redis6381配置
      redis6381:
        image: redis
        hostname: redis6381
        container_name: redis6381
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6381/conf/redis6381.conf:/etc/redis/redis6381.conf
          - /home/soft/redis-cluster/6381/data:/data
        command: ["redis-server", "/etc/redis/redis6381.conf"]
      # redis6382配置
      redis6382:
        image: redis
        hostname: redis6382
        container_name: redis6382
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6382/conf/redis6382.conf:/etc/redis/redis6382.conf
          - /home/soft/redis-cluster/6382/data:/data
        command: ["redis-server", "/etc/redis/redis6382.conf"]
      # redis6383配置
      redis6383:
        image: redis
        hostname: redis6383
        container_name: redis6383
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6383/conf/redis6383.conf:/etc/redis/redis6383.conf
          - /home/soft/redis-cluster/6383/data:/data
        command: ["redis-server", "/etc/redis/redis6383.conf"]
      # redis6384配置
      redis6384:
        image: redis
        hostname: redis6384
        container_name: redis6384
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6384/conf/redis6384.conf:/etc/redis/redis6384.conf
          - /home/soft/redis-cluster/6384/data:/data
        command: ["redis-server", "/etc/redis/redis6384.conf"]
      # redis6385配置
      redis6385:
        image: redis
        hostname: redis6385
        container_name: redis6385
        restart: always
        network_mode: "host"
        privileged: true
        volumes:
          - /home/soft/redis-cluster/6385/conf/redis6385.conf:/etc/redis/redis6385.conf
          - /home/soft/redis-cluster/6385/data:/data
        command: ["redis-server", "/etc/redis/redis6385.conf"]
    

    启动并查看:

    sudo docker compose -f redis-cluster.yml up -d
    sudo docker compose -f redis-cluster.yml ps
    
    up

    相关文章

      网友评论

          本文标题:Docker实用-安装redis

          本文链接:https://www.haomeiwen.com/subject/uwzwsdtx.html