Docker Centos安裝Redis以及問題處理

振宇要低調發表於2015-07-27

  之前一篇文章 Redis安裝及主從配置 介紹了redis的安裝配置,另一篇檔案介紹了 Docker Centos安裝Openssh 。今天將兩篇檔案結合一下——在Docker Centos環境下搭建redis快取資料庫。

  Redis安裝及主從配置 中執行到 “2.2.4啟動 redis 服務” 即可認定為redis環境搭建完畢。但是要在docker容器中搭建這些東西就不這麼容易了。比如你的容器中要存在make、g++、autoconfig等環境,但是仔細想想,這些編譯需要的環境在真正執行的時候並沒有什麼O用。所以我們今天不用這種方式搭建。我們用的方式如下:

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

    2、在普通Linux伺服器上,按照Redis安裝及主從配置 執行到 “2.2.4啟動 redis 服務”

    3、將上一步生成的資料夾 /usr/local/webserver/redis 拷貝到Docker centos ssh 環境中,並未可執行檔案賦許可權

    4、編寫開機啟動指令碼

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


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

 

  另外想分享一個我遇到的問題,建立了redis容器之後,在宿主機上對容器進行重啟的過程中,如果redis資料庫在進行讀寫任務的話,重新啟動的容器有可能無法啟動redis服務。具體報錯如下:

[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在運算元據檔案時被強制停止,導致資料檔案不完整、格式正確。

  解決方法:

    刪除/usr/local/webserver/redis/db/ 資料夾下的 *.rdb 檔案,重啟redis容器即可

相關文章