Docker Swarm redis 集羣搭建c++
環境1:redis
環境2:docker
目錄結構centos
└── redis
├── Dockerfile
├── redis-4.0.9.tar.gz
└── redis.conf網絡
└── service_redis.ymltcp
下載ide
一、建立dockerfileui
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
二、建立鏡像(redis目錄下)編碼
docker build -t 192.168.1.81:5000/redis:v1 .
三、上傳鏡像spa
docker push 192.168.1.81:5000/redis:v1
四、建立 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"
五、建立服務
docker stack deploy -c service_redis.yml redis