Docker Centos安裝Redis以及問題處理

  以前一篇文章 Redis安裝及主從配置 介紹了redis的安裝配置,另外一篇文件介紹了 Docker Centos安裝Openssh 。今天將兩篇文件結合一下——在Docker Centos環境下搭建redis緩存數據庫。html

  Redis安裝及主從配置 中執行到 「2.2.4啓動 redis 服務」 便可認定爲redis環境搭建完畢。可是要在docker容器中搭建這些東西就不這麼容易了。好比你的容器中要存在make、g++、autoconfig等環境,可是仔細想一想,這些編譯須要的環境在真正運行的時候並無什麼O用。因此咱們今天不用這種方式搭建。咱們用的方式以下:web

    一、在docker宿主機上,按照Docker Centos安裝Openssh,搭建Docker centos ssh 環境redis

    二、在普通Linux服務器上,按照Redis安裝及主從配置 執行到 「2.2.4啓動 redis 服務」docker

    三、將上一步生成的文件夾 /usr/local/webserver/redis 拷貝到Docker centos ssh 環境中,並未可執行文件賦權限數據庫

    四、編寫開機啓動腳本centos

[root@redis /]# vi /run.sh 
#!/bin/bash
/usr/local/webserver/redis/start.sh
/usr/sbin/sshd -D


OK,就這麼簡單的完成了。緩存

 

  另外想分享一個我遇到的問題,建立了redis容器以後,在宿主機上對容器進行重啓的過程當中,若是redis數據庫在進行讀寫任務的話,從新啓動的容器有可能沒法啓動redis服務。具體報錯以下:bash

[root@redis redis]# /usr/local/webserver/redis/redis-server /usr/local/webserver/redis/conf/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.6.16 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 42
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[42] 27 Jul 07:03:30.511 # Server started, Redis version 2.6.16
[42] 27 Jul 07:03:30.511 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[42] 27 Jul 07:03:30.511 # Wrong signature trying to load DB from file
[42] 27 Jul 07:03:30.511 # Fatal error loading the DB: Invalid argument. Exiting.

分析緣由是redis在操做數據文件時被強制中止,致使數據文件不完整、格式正確。服務器

  解決方法:ssh

    刪除/usr/local/webserver/redis/db/ 文件夾下的 *.rdb 文件,重啓redis容器便可

相關文章
相關標籤/搜索