Docker Centos安裝Redis以及問題處理


  之前一篇文章 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容器即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM