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