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容器即可

posted @ 2015-07-27 16:36  振宇要低调  阅读(4466)  评论(0编辑  收藏  举报