1. 程式人生 > >Docker redis集群搭建

Docker redis集群搭建

啟動 src 時間 圖片 x86 con ros 環境 編碼

Docker redis集群搭建

環境1:

  • 系統:Linux Centos 7.4 x64
  • 內核:Linux docker 3.10.0-693.2.2.el7.x86_64
  • Docker 版本:18.09.1
  • redis 版本:redis-4.0.9
  • 主機數量:1臺
  • 主機地址:192.168.1.81

環境2:

  • 已搭建 Docker Swarm 管理
  • 已搭建 Docker 私有倉庫
  • 已搭建 NFS 存儲

目錄結構

└── redis
  ├── Dockerfile
  ├── redis-4.0.9.tar.gz
  └── redis.conf

└── service_redis.yml


下載

  • redis壓縮包
  • 下載地址:https://pan.baidu.com/s/14Sr47StorzgDYMeH054waA
  • 密碼:xlln

1、創建dockerfile

FROM centos:6
MAINTAINER xiangsikai
ENV LANG en_US.UTF-8
ENV TZ=Asia/Shanghai
RUN yum install -y gcc gcc-c++ tcl sudo
ADD redis-4.0.9.tar.gz /usr/local/
RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0
.9/logs && mkdir /usr/local/redis-4.0.9/run RUN cd /usr/local/redis-4.0.9/ && make && make install RUN rm -rf /usr/local/redis-4.0.9/redis.conf COPY redis.conf /usr/local/redis-4.0.9/redis.conf RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis* CMD [
"sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"] EXPOSE 6379
技術分享圖片
# 指定系統鏡像版本
FROM centos:6
# 指定管理員名稱
MAINTAINER xiangsikai
# 添加變量,指定中文編碼
ENV LANG en_US.UTF-8
# 添加變量,同步系統時間
ENV TZ=Asia/Shanghai
# 添加命令
RUN yum install -y gcc gcc-c++ tcl sudo
# 添加文件
ADD redis-4.0.9.tar.gz /usr/local/
# 添加命令
RUN mkdir /usr/local/redis-4.0.9/data && mkdir /usr/local/redis-4.0.9/logs && mkdir /usr/local/redis-4.0.9/run
# 添加命令
RUN cd /usr/local/redis-4.0.9/ && make && make install
# 添加命令件
RUN rm -rf /usr/local/redis-4.0.9/redis.conf
# 上傳文件,上傳本地文件到容器
COPY redis.conf /usr/local/redis-4.0.9/redis.conf
# 添加命令
RUN useradd redis && chown -R redis:redis /usr/local/redis-4.0.9/ && chown -R redis:redis /usr/local/bin/redis*
# 啟動命令
CMD ["sudo","-u","redis","/usr/local/bin/redis-server","/usr/local/redis-4.0.9/redis.conf"]
# 開放端口
EXPOSE 6379
文件註釋

2、創建鏡像(redis目錄下)

docker build -t 192.168.1.81:5000/redis:v1 .

3、上傳鏡像

docker push 192.168.1.81:5000/redis:v1

4、創建 service_redis.yml

version: 3.7
services:

  redis:
    image: 192.168.1.81:5000/redis:v1
    ports:
      - 6380:6379
    networks:
      - networkce
    deploy:
      mode: replicated
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        order: start-first
      rollback_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        order: start-first
    volumes:
      - type: volume
        source: nfs-redis_log
        target: /usr/local/redis-4.0.9/logs
        volume:
          nocopy: true

networks:
  networkce:
    driver: overlay

volumes:
  nfs-redis_log:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
      device: "192.168.1.81:/docker/service/zs/redis/log"
技術分享圖片
# 指定版本
version: 3.7
# 服務
services:

# 指定服務名
  redis:
    # 指定使用鏡像
    image: 192.168.1.81:5000/redis:v1
    # 指定開放端口
    ports:
      - 6379:6379
    # 指定網絡
    networks:
      - networkce
    # 管理容器
    deploy:
      # 設置副本模式
      mode: replicated
      # 副本數
      replicas: 2
      # 更新配置
      update_config:
        # 每次更新數量
        parallelism: 1
        # 每次更新時間
        delay: 10s
        # 更新失敗設置,rollback回滾
        failure_action: rollback
        # 更新狀態,start-firest 更新同時疊加舊版本,之後刪除
        order: start-first
      # 回滾配置
      rollback_config:
        # 每次回滾數量
        parallelism: 1
        # 每次回滾時間
        delay: 10s
        # 回滾失敗設置,rollback回滾
        failure_action: rollback
        # 回滾狀態,start-firest 回滾同時疊加舊版本,之後刪除
        order: start-first
    # 配置持久化數據
    volumes:
      # 數據類型
      - type: volume
        # 設置名稱
        source: nfs-redis_log
        # 掛載容器路徑
        target: /usr/local/redis-4.0.9/logs
        # 默認
        volume:
          nocopy: true

# 網絡
networks:
  # 添加網絡名稱
  networkce:
    driver: overlay

# 數據持久化
volumes:
  # 數據名稱
  nfs-redis_log:
    driver: local
    driver_opts:
     # 類型
      type: "nfs"
      # 官方默認配置 
      o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
      device: "192.168.1.81:/docker/service/zs/redis/log"
文件註釋

5、創建服務

docker stack deploy -c service_redis.yml redis

Docker redis集群搭建