Docker Swarm 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

 

转载于:https://www.cnblogs.com/xiangsikai/p/10291242.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐