docker 安裝部署 redis(配置文件啓動)

安裝 docker

[修訂]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

獲取 redis 鏡像

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 容器服務

# 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 的地址作數據同步

相關文章
相關標籤/搜索