此文章假设你已经安装了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  

创建从redis

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 进行配置

进入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 命令查看

恢复主从复制

docker学习(四) - docker构建redis主从结构的更多相关文章

  1. Redis主从结构主节点执行写入后wait命令对性能的影响

    这里的Redis主从结构可以是简单的主从,sentinel,redis cluster中的主从等. wait命令的作用:此命令将阻塞当前客户端,直到当前Session连接(主节点上)所有的写命令都被传 ...

  2. Docker学习之Docker镜像基本使用

    Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...

  3. Docker学习之Docker容器基本使用

    Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...

  4. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  5. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  6. Docker学习之4——构建NGINX镜像

    Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建ng ...

  7. Docker 学习之mysql与redis(二)

    在上一随笔中主要就是记录docker的基本使用以及nginx与php服务器的配置:在这一章将主要记录docker安装mysql与redis. 本节随笔参考网址:https://www.runoob.c ...

  8. Docker学习:Docker安装和基本使用

    Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...

  9. Docker 学习3 Docker镜像管理基础

    一.docker 常用操作及原理 1.docker 常用操作 2.docker 机制 1.docker client端是通过http或者https与server端通信的.个 2.docker 镜像可以 ...

随机推荐

  1. 「ZJOI2014」星系调查

    「ZJOI2014」星系调查 本题核心在于快速求XPs 的线性假设相斥度. 点\((x1,y1)\)到直线\(y=kx+b\)的距离的平方为\(\displaystyle {(kx1+b-y1)^2} ...

  2. sql注入,xss攻击,csrf(模拟请求),防盗链

    如何防止别人模拟请求? 使用令牌token解决模拟请求  好处是 唯一性只能有一次请求 已经拿到生成的token  如何防止呢?  怎样防止非人工? 使用验证码 xss攻击? xss攻击也叫脚本注入 ...

  3. iOS中通过链接地址打开指定APP并传参 by徐文棋

    基于项目需要,有时候需要通过一个链接,或者二维码扫描来直接打开我们所开发的客户端. 当然了.客户端也不仅仅是需要被打开,而且还要跳到相应的页面去,因此这里需要传参. 客户端想用链接打开,必须要在inf ...

  4. linux_12

    一.主从复制及主主复制的实现 主从复制 master配置 # yum -y install mysql-server # systemctl enable --now # vim /etc/my.cn ...

  5. 关于es update异常 ScriptException[dynamic scripting for [groovy] disabled]

    你需要在elasticsearch.yml中配置 script.disable_dynamic: false 然后别忘了重启.

  6. 4、前端--浮动、定位、是否脱离文档流、溢出属性、z-index、透明度、JavaScript简介

    浮动 # ps:html代码时没有缩进一说的 全部写在一行也可以 """浮动主要就是用于页面布局的!!!""" # 浮动带来的负面影响 &q ...

  7. redis(二)-----redis基本数据类型之字符串

    Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串.哈希.列表.集合.有序集合,同时在字符串的基础之上演变 出了位图(Bitmaps)和HyperLo ...

  8. Solution -「JOISC 2021」「LOJ #3491」道路建设

    \(\mathcal{Description}\)   Link.   平面上有 \(n\) 个互不重合的点 \((x_{1..n},y_{1..n})\),求其两两曼哈顿距离的前 \(m\) 小值. ...

  9. Solution -「CF 1119F」Niyaz and Small Degrees

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...

  10. .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...