您的位置:首页 > 运维架构 > Docker

Docker Centos安装Redis以及问题处理

2015-07-27 16:36 676 查看
  之前一篇文章 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容器即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: