简单运行redis
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
获取 redis 镜像
docker search redis
docker pull redis:latest
docker images
创建容器
创建宿主机 redis 容器的数据和配置文件目录
# 这里我们在 /home/docker 下创建
mkdir /home/docker/redis/config
cd /home/docker/redis/config
touch redis.conf
vim redis.conf
获取 redis 的默认配置模版
这个时候直接去网上找个redis.conf样例
修改一下其中的配置
bind
protected-mode
requirepass
daemonize yes 千万要注释掉,不然起不来docker容器
protected-mode 是在没有显示定义 bind 地址(即监听全网断),又没有设置密码 requirepass
时,protected-mode 只允许本地回环 127.0.0.1 访问。
也就是说当开启了 protected-mode 时,如果你既没有显示的定义了 bind 监听的地址,同时又没有设置 auth 密码。那你只能通过 127.0.0.1 来访问 redis 服务。
创建并运行一个名为 redis 的容器
docker run -d \
-p 6379:6379 \ # 端口映射 宿主机:容器
-v /mnt/redis/data:/etc/redis/data:rw \ # 映射数据目录 rw 为读写
-v /mnt/redis/config/redis.conf:/etc/redis/redis.conf:ro \ # 挂载配置文件 ro 为readonly
--privileged=true \ # 给与一些权限
--name redis \ # 给容器起个名字
redis redis-server /etc/redis/redis.conf # deamon 运行容器 并使用配置文件启动容器内的 redis-server
查看活跃的容器
# 查看活跃的容器
docker ps
# 如果没有 redis 说明启动失败 查看错误日志
docker logs redis
# 查看 redis 的 ip 挂载 端口映射等信息
docker inspect redis
# 查看 redis 的端口映射
docker port redis
外部访问 redis 容器服务
# redis-cli 访问
docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379
# -it 交互的虚拟终端
# --rm 退出是删除此容器
或者使用 shell 登录容器内操作
docker exec -it redis bash
redis-cli
配置完成
主从配置
新建容器 redis-slave
查看 redis master 的内部 ip
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-slave
docker restart redis-slave
登录 redis master 使用 info 命令查看从的状态
如果配置不成功记得检查 redis master 的 bind 和 protected-mode 的设置,看下有没有监听内网地址,否则 redis-slave 没办法通过 redis master 的地址做数据同步