[修訂]docker 已分爲 ce/ee 直接yum版本較低 請使用下方安裝最新版html
docker-ce yum 安裝:https://www.cnblogs.com/Peter...(轉)或使用 daocloud 安裝:http://get.daocloud.io/#insta...git
# 2019-1-24 註明: #安裝 docker yum install docker -y systemctl start docker.service
docker search redis docker pull redis:latest docker images
建立宿主機 redis 容器的數據和配置文件目錄github
# 這裏咱們在 /home/docker 下建立 mkdir /home/docker/redis/{conf,data} -p cd /home/docker/redis
獲取 redis 的默認配置模版redis
# 獲取 redis 的默認配置模版 # 這裏主要是想設置下 redis 的 log / password / appendonly # redis 的 docker 運行參數提供了 --appendonly yes 但沒 password wget https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf -O conf/redis.conf # 直接替換編輯 sed -i 's/logfile ""/logfile "access.log"/' conf/redis.conf sed -i 's/# requirepass foobared/requirepass 123456/' conf/redis.conf sed -i 's/appendonly no/appendonly yes/' conf/redis.conf # 這裏可能還需配置一些 bind protected-mode
protected-mode 是在沒有顯示定義 bind 地址(即監聽全網斷),又沒有設置密碼 requirepass
時,protected-mode 只容許本地迴環 127.0.0.1 訪問。
也就是說當開啓了 protected-mode 時,若是你既沒有顯示的定義了 bind 監聽的地址,同時又沒有設置 auth 密碼。那你只能經過 127.0.0.1 來訪問 redis 服務。
建立並運行一個名爲 myredis 的容器docker
# 建立並運行一個名爲 myredis 的容器 docker run \ -p 6379:6379 \ -v $PWD/data:/data \ -v $PWD/conf/redis.conf:/etc/redis/redis.conf \ --privileged=true \ --name myredis \ -d redis redis-server /etc/redis/redis.conf # 命令分解 docker run \ -p 6379:6379 \ # 端口映射 宿主機:容器 -v $PWD/data:/data:rw \ # 映射數據目錄 rw 爲讀寫 -v $PWD/conf/redis.conf:/etc/redis/redis.conf:ro \ # 掛載配置文件 ro 爲readonly --privileged=true \ # 給與一些權限 --name myredis \ # 給容器起個名字 -d redis redis-server /etc/redis/redis.conf # deamon 運行容器 並使用配置文件啓動容器內的 redis-server
查看活躍的容器shell
# 查看活躍的容器 docker ps # 若是沒有 myredis 說明啓動失敗 查看錯誤日誌 docker logs myredis # 查看 myredis 的 ip 掛載 端口映射等信息 docker inspect myredis # 查看 myredis 的端口映射 docker port myredis
# redis-cli 訪問 docker run -it --link myredis:redis --rm redis redis-cli -h redis -p 6379 # -it 交互的虛擬終端 # --rm 退出是刪除此容器
或者使用 shell 登陸容器內操做bash
docker exec -it myredis bash redis-cli
配置完成app
新建容器 redis-slave
查看 redis master 的內部 iptcp
docker inspect redis #Networks 能夠獲得 redis master 的 ip 地址 "NetworkSettings": { "Ports": { "6379/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "6379" } ] }, ... "Gateway": "192.168.0.1", ... "IPAddress": "192.168.0.3",#ip ... "Networks": { "bridge": { ... "Gateway": "192.168.0.1", "IPAddress": "192.168.0.3",#ip ... } } } 修改 redis-slave 的配置文件 # 主地址 slaveof master-ip master-port # 主認證 masterauth
重啓 redis-slaveui
docker restart redis-slave
登陸 redis master 使用 info 命令查看從的狀態
若是配置不成功記得檢查 redis master 的 bind 和 protected-mode 的設置,看下有沒有監聽內網地址,不然 redis-slave 沒辦法經過 redis master 的地址作數據同步