docker学习(四) - docker构建redis主从结构
阅读原文时间:2023年07月08日阅读:2

此文章假设你已经安装了docker,如果没有安装请查询本博客docker安装章节

docker network ls  查看默认的网络

Docker安装后,默认会创建下面三种网络类型

在启动容器时使用  --network bridge 指定网络类型

bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。

例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中

因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:172.10.0.0/16 并命名为mynetwork,指令

如:docker network create  --subnet=172.10.0.0/16  mynetwork

建立错误可以删除网络

docker network rm mynetwork

创建目录

mkdir -p /wwwroot/docker/redis

创建dockerfile文件

cd /wwwroot/docker/redis/

touch Dockerfile

vi Dockerfile

输入下面的内容

FROM centos:latest
RUN groupadd -r redis && useradd -r -g redis redis
RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools
EXPOSE 6379

生成镜像(执行下面代码,注意后面上下文点号)

docker build -t redis  .

创建完成后可以docker images查看生成的镜像

接下来使用此docker镜像 创建容器(创建主redis)

docker run -itd --name redis-master --net mynetwork -p 6380:6379 --ip 172.10.0.2 redis

redis-master 容器名字

redis 镜像名字

参数说明:

具体可以参看一些文档

http://www.runoob.com/docker/docker-run-command.html

http://www.dockerinfo.net/docker%E5%AE%B9%E5%99%A8-2

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--ip: 为容器制定一个固定的ip

--net: 指定网络模式

查看容器

docker ps -a 或者

docker container

停止容器

docker stop  redis-master

删除容器

docker rm  redis-master

查看容器ip地址

docker network inspect mynetwork  

docker run -itd  --name  redis-slave  --net mynetwork  -p 6381:6379  --ip 172.10.0.3  redis

现在主从结构是

容器名称

容器IP地址

映射端口号

宿主机IP地址

服务运行模式

Redis-master

172.10.0.2

6380 -> 6379

172.168.17.3

Master

Redis-slave

172.10.0.3

6381 -> 6379

172.168.17.3

Slave

分别进入主从redis 进行配置

进入redis主容器

docker exec -it redis-master bash

修改配置文件

vi /etc/redis.conf

配置监听ip,配置密码

bind 0.0.0.0

requirepass 123456

启动redis

redis-server /etc/redis.conf &

进入redis从容器

docker exec -it redis-slave bash

配置监听ip

bind 0.0.0.0

配置密码

requirepass 123456

配置主redis ip

slaveof 172.10.0.2 6379

配置主redis密码

masterauth 123456

启动redis

redis-server /etc/redis.conf &

主redis

从redis

关闭主从:

在从节点中redis-cli 中输入

slaveof no one

就断开了主从关系

可以通过 info replication 命令查看

恢复主从复制