〇、環境准備
1.兩台裝好Docker的計算機(或兩個虛擬機)
我這里是在VMware中運行的兩個Centos7系統
我們把CentOS-64-0作為主機(Master),CentOS-64-1作為從機(Slave)
2.安裝redis
在docker中安裝redis(只把redis pull下來,不要進一步配置)
一、在docker中使用外部 redis的配置文件
1.配置文件redis.conf
首先在你的兩台宿主機上編寫好redis配置文件,即redis.conf
可以從redis官網下載配置文件模板 在Centos7系統中,使用以下命令,下載到本地:
wget http://download.redis.io/redis-stable/redis.conf -O <文件名>
2.配置參數
主機(Master)修改下載下來的redis.conf,主要修改參數如下:
#bind 127.0.0.1 #如果bind選項為空的話,則允許所有來自於可用網絡接口的連接
protected-mode no #保護模式,若為yes,只允許本地客戶端連接
appendonly yes #開啟后,Redis會把每次寫入的數據在接收后都寫入appendonly.aof文件,每次啟動時Redis都會先把這個文件的數據讀入內存里
從機(Slave)修改下載下來的redis.conff,主要修改參數如下:
#bind 127.0.0.1
protected-mode no
appendonly yes
# replicaof <master ip> <master port>
replicaof 192.168.22.130 6379 #Redis主機(Master)IP 端口
二、在docker中創建redis容器,並以外部文件啟動
1.主從機器同樣啟動:
# docker redis 以配置文件運行:
#docker run -p <容器端口>:<主機端口> --name <容器名> -v <本地配置文件映射容器配置文件> -v <本地文件夾掛載到容器文件夾> -d(表示以守護進程方式啟動容器) <啟動redis服務並制定配置文件(容器中的路徑)>
docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/usr/local/redis.conf -v /usr/local/docker/data:/usr/local/data -d redis redis-server /usr/local/redis.conf
2.進入redis
確保docker以及redis容器都啟動之后,使用docker exec -it <redis容器名> redis-cli命令進入redis
3.測試
在主機存入一個key:
在從機獲取:
三、注意
1.replicaof 和 slaveof
在redis5.x的主從配置中,從機配置要配置 replicaof 參數。而早期版本,要配置的是slaveof參數。
2.已有redis容器
得先刪除該容器,待配置好外部redis.conf后,重新創建。
3.daemonize參數
在docker中,redis.conf文件中的daemonize參數要設置為no(默認是no)。
daemonize=yes的意思為后台運行redis,但這會導致容器跑不起來。
4.protected-mode
設置為yes時,只允許本地服務端連接,導致不同機子(或虛擬機)的主從機無法連接。